Результаты поиска
Автогенерация Диаграммы Базы Данных MySQL
Я устал открывать Dia и создавать схему базы данных в начале каждого проекта. Есть ли там инструмент, который позволит мне выбрать определенные таблицы, а затем создать схему базы данных для меня на основе базы данных MySQL? Предпочтительно, чтобы это позволило мне отредактировать диаграмму позже, так как ни один из внешних ключей не установлен...
Вот что я представляю себе схематично (пожалуйста, извините за ужасный дизайн данных, я его не проектировал. Давайте сосредоточимся на концепции диаграммы, а не на фактических данных, которые она представляет для этого примера ;) ):
Автогенерация Диаграммы Базы Данных MySQL
Я устал открывать Dia и создавать схему базы данных в начале каждого проекта. Есть ли там инструмент, который позволит мне выбрать определенные таблицы, а затем создать схему базы данных для меня на основе базы данных MySQL? Предпочтительно, чтобы это позволило мне отредактировать диаграмму позже, так как ни один из внешних ключей не установлен...
Вот что я представляю себе схематично (пожалуйста, извините за ужасный дизайн данных, я его не проектировал. Давайте сосредоточимся на концепции диаграммы, а не на фактических данных, которые она представляет для этого примера ;) ):
Каковы преимущества использования единой базы данных для EACH клиента?
В ориентированном на базу данных приложении, которое предназначено для нескольких клиентов, я всегда думал, что "better" будет использовать единую базу данных для ALL клиентов-связывая записи с соответствующими индексами и ключами. Слушая подкаст Stack Overflow, я услышал, как Джоэл упомянул, что FogBugz использует одну базу данных на клиента (так что если бы было 1000 клиентов, то было бы 1000 баз данных). Каковы преимущества использования этой архитектуры?
Я понимаю, что для некоторых проектов клиентам нужен прямой доступ ко всем их данным - в таком приложении очевидно, что каждому клиенту нужна своя база данных. Однако для проектов, где клиенту не нужно обращаться непосредственно к базе данных, есть ли какие-либо преимущества в использовании одной базы данных на клиента? Кажется, что с точки зрения гибкости гораздо проще использовать единую базу данных с одной копией таблиц. Проще добавлять новые функции, легче создавать отчеты и просто легче управлять ими.
Я был довольно уверен в методе "one database for all clients", пока не услышал, как Джоэл (опытный разработчик) упомянул, что его программное обеспечение использует другой подход, и я немного смущен его решением...
Я слышал, как люди цитируют, что базы данных замедляются с большим количеством записей, но любая реляционная база данных с некоторыми достоинствами не будет иметь этой проблемы - особенно если используются правильные индексы и ключи.
Любой вход очень ценится!
Триггеры базы данных
В прошлом я никогда не был поклонником использования триггеров в таблицах базы данных. Для меня они всегда представляли собой некий "magic", который должен был произойти на стороне базы данных, далеко - далеко от контроля моего кода приложения. Я также хотел ограничить объем работы, которую должен был выполнять DB, поскольку это обычно общий ресурс, и я всегда предполагал, что триггеры могут быть дорогостоящими в сценариях с высокой нагрузкой.
Тем не менее, я нашел несколько примеров, когда триггеры имели смысл использовать (по крайней мере, на мой взгляд, они имели смысл). Однако недавно я оказался в ситуации, когда мне иногда может понадобиться "bypass" спусковой крючок. Я чувствовал себя очень виноватым из-за необходимости искать способы сделать это, и я все еще думаю, что лучший дизайн базы данных облегчил бы необходимость этого обхода. К сожалению, этот DB используется несколькими приложениями, некоторые из которых поддерживаются очень несговорчивой командой разработчиков, которая кричала бы об изменениях схемы, поэтому я застрял.
Что там за общий консесус насчет триггеров? Любишь их? Ненавидеть их? Думаете, они служат какой-то цели в некоторых сценариях? Считаете ли вы, что необходимость обойти триггер означает, что вы "делаете это неправильно"?
Когда файл-это просто файл?
Итак, вы пишете веб-приложение, и у вас есть несколько областей сайта, где пользователь может загружать файлы. Мой основной метод работы для этого-сохранить фактический файл на сервере и иметь таблицу базы данных, которая соединяет сохраненное имя файла с записью, к которой оно относится.
Мой вопрос заключается в следующем: должна ли быть другая таблица для каждого "type" файла? Кроме того, следует ли хранить файлы в контекстно-зависимых местах на сервере или все вместе?
Несколько примеров: фотографии профиля пользователя, работа приложений CVs, документов на страницах CMS и т. д.
Запрос таблицы объединения с полями в виде столбцов
Я не совсем уверен, возможно ли это, или попадает в категорию таблиц pivot, но я решил, что пойду к профессионалам, чтобы увидеть.
У меня есть три основные таблицы: Card, Property и CardProperty. Поскольку карты не имеют одинаковых свойств и часто имеют несколько значений для одного и того же свойства, я решил использовать подход union table для хранения данных вместо того, чтобы иметь действительно большую структуру столбцов в моей карточной таблице.
Таблица свойств-это базовая таблица типов ключевых слов и значений. Таким образом, у вас есть ключевое слово ATK и значение, присвоенное ему. Существует еще одно свойство, называемое SpecialType, для которого карта может иметь несколько значений, например "Sycnro" и "DARK"
Я бы хотел создать представление или хранимую процедуру, которая дает мне идентификатор карты, имя карты и все ключевые слова свойств, назначенные карте в виде столбцов, и их значения в ResultSet для указанной карты. Поэтому в идеале у меня был бы результирующий набор, например:
ID NAME SPECIALTYPE
1 Red Dragon Archfiend Synchro
1 Red Dragon Archfiend DARK
1 Red Dragon Archfiend Effect
и я мог бы подсчитать свои результаты таким образом.
Я думаю, что даже slicker будет просто объединять свойства вместе на основе их ключевого слова, поэтому я мог бы создать ResultSet как:
1 Red Dragon Archfiend Synchro/DARK/Effect
..но я не знаю, возможно ли это.
Помогите мне stackoverflow Кеноби! Ты моя единственная надежда.
Какова наилучшая стратегия сохранения больших наборов данных?
Я веду проект, где мы будем записывать данные метрик. Я хотел бы сохранить данные в течение многих лет. Тем не менее, я также хотел бы, чтобы основная таблица не раздувалась с данными, которые, хотя и необходимы для долгосрочного тренда, не требуются для краткосрочной отчетности.
Какова наилучшая стратегия для решения этой ситуации? Просто архивировать старые данные в другую таблицу? Или "roll it up" через некоторую консолидацию самих данных (а затем сохранить его в другую таблицу)? Или что-то совсем другое?
Дополнительная информация: мы используем SQL Server 2005.
Запрос таблицы объединения с полями в виде столбцов
Я не совсем уверен, возможно ли это, или попадает в категорию таблиц pivot, но я решил, что пойду к профессионалам, чтобы увидеть.
У меня есть три основные таблицы: Card, Property и CardProperty. Поскольку карты не имеют одинаковых свойств и часто имеют несколько значений для одного и того же свойства, я решил использовать подход union table для хранения данных вместо того, чтобы иметь действительно большую структуру столбцов в моей карточной таблице.
Таблица свойств-это базовая таблица типов ключевых слов и значений. Таким образом, у вас есть ключевое слово ATK и значение, присвоенное ему. Существует еще одно свойство, называемое SpecialType, для которого карта может иметь несколько значений, например "Sycnro" и "DARK"
Я бы хотел создать представление или хранимую процедуру, которая дает мне идентификатор карты, имя карты и все ключевые слова свойств, назначенные карте в виде столбцов, и их значения в ResultSet для указанной карты. Поэтому в идеале у меня был бы результирующий набор, например:
ID NAME SPECIALTYPE
1 Red Dragon Archfiend Synchro
1 Red Dragon Archfiend DARK
1 Red Dragon Archfiend Effect
и я мог бы подсчитать свои результаты таким образом.
Я думаю, что даже slicker будет просто объединять свойства вместе на основе их ключевого слова, поэтому я мог бы создать ResultSet как:
1 Red Dragon Archfiend Synchro/DARK/Effect
..но я не знаю, возможно ли это.
Помогите мне stackoverflow Кеноби! Ты моя единственная надежда.
Одна база данных или много?
Я разрабатываю веб-сайт, который будет управлять данными для нескольких объектов. Данные не являются общими для всех объектов, но они могут принадлежать одному и тому же клиенту. Клиент может захотеть управлять всеми своими сущностями из одного "dashboard". Так что я должен иметь одну базу данных для всего, или держать данные разделены на отдельные базы данных? Есть ли лучшая практика? Каковы положительные / отрицательные стороны для того, чтобы иметь:
- база данных для всего сайта (сущности имеет "customerID", данные имеет "entityID")
- база данных для каждого клиента (данные "entityID")
- база данных для каждой сущности (отношение база данных для клиента находится за пределами база данных)
Несколько баз данных, похоже, будут иметь лучшую производительность (меньше строк и соединений), но в конечном итоге могут стать кошмаром обслуживания.
551   11   03:27, 12th August, 2020
Рекомендуемый SQL дизайн базы данных для тегов или меток
Я слышал о нескольких способах реализации тегирования; использование таблицы сопоставления между TagID и ItemID (имеет смысл для меня, но масштабируется ли она?), добавление фиксированного числа возможных столбцов TagID к ItemID (кажется, это плохая идея), сохранение тегов в текстовом столбце, разделенном запятыми (звучит безумно, но может сработать). Я даже слышал, что кто-то рекомендовал разреженную матрицу, но тогда как же имена тегов растут изящно?
Я пропустил лучшую практику для тегов?
Эффективная стратегия для оставления истории аудита trail/изменений для DB приложений?
Назовите Некоторые стратегии, которые люди успешно использовали для ведения истории изменений данных в довольно сложной базе данных. Одно из приложений, которое я часто использую и разрабатываю, действительно может извлечь выгоду из более полного способа отслеживания изменений записей с течением времени. Например, прямо сейчас записи могут иметь ряд timestamp и измененных пользовательских полей, но в настоящее время у нас нет схемы для регистрации нескольких изменений, например, если операция откатывается. В идеальном мире можно было бы восстановить запись, какой она была после каждого сохранения, и т. д.
Немного информации о DB:
- Необходимо иметь возможность расти на тысячи записей в неделю
- 50-60 таблиц
- Основные пересмотренные таблицы могут содержать несколько миллионов записей каждая
- Разумное количество внешних ключей и индексов набора
- Использование PostgreSQL 8.x