Предположим, что у меня есть таблица и для упрощения всех строк около Persons
.
Так что предположим, что мы храним цвет человека. Теперь давайте сделаем упрощение, что у нас есть 1 миллион записей, а весь цвет белый (глупый пример, но, пожалуйста, со мной).
Теперь в этом случае white
повторяется более 1 миллиона раз.
Теперь, если мы не можем изменить таблицу, например, white_person table так, как это происходит, означает ли это, что атрибут color
и person
имеют определенное отношение, которое
1) оправдывает повторяющийся атрибут в таблице?
2) оправдывает создание новой таблицы и рассматривает ее как отношение 1-N
? Но формально, как бы определить этот тип отношений?Как мы обрабатываем столбец, который имеет одинаковое значение во всех записях таблицы?
ответ
Теперь, если мы не можем изменить таблицу, например, white_person table Способ, которым он является, означает ли это, что цвет атрибута и лицо имеют определенное отношение, которое
1) оправдывает повторяющийся атрибут в таблице?
Повторяющийся атрибут имеет определенное значение в технологии баз данных. Он не означает, что вы можете найти несколько строк, имеющих одинаковое значение. (Вот что такое строки: для.) У вас нет повторяющегося атрибута.
2) оправдывает создание новой таблицы и рассматривает ее как отношение 1-N ? Но формально, как бы этот тип отношений определялся ?
Отношения 1-N будут идентифицированы функциональной зависимостью - вы найдете человека, цвет которого белый, а цвет - также fuschia. Сколько цветов может быть человек в вашей базе данных?
Если одно и то же значение повторяется в каждой строке, то из-за зависимости, которую вы действительно хотели моделировать, ∅ -> {color}, тогда таблица ваших лиц нарушает 2NF: определитель ∅ (пустой набор) является правильным подмножеством ключа. Изменения, необходимые для удовлетворения 2NF, заключались бы в том, чтобы удалить атрибут цвета в новую таблицу с ключом на ∅ (т. Е. Таблицу с одной строкой). Или вообще удалите атрибут из модели.
Обратите внимание, что зависимость никогда автоматически не подразумевается только из-за совпадения некоторых значений в таблице. В чем дело, какие бизнес-правила требуют, чтобы СУБД обеспечивала соблюдение и правильно ли поддерживала модель данных.
Я обсуждал аналогичный пример here.
Что такое '∅ -> {color}'? Я не совсем понимаю, что вы имеете ввиду? – Jim
X-> A означает функциональную зависимость, в которой значения атрибута (ов) X определяют значения A. Если X - это пустой набор, означающий, что значение A должно быть определено без ссылки на любой другой атрибут, и поэтому значение из A одинакова для каждой строки. – sqlvogel
Если факт может быть принят, его не нужно хранить. Поэтому, если есть персональный атрибут, значение которого известно заранее, что вы знаете , обязательно - это то же самое для всех людей в базе данных и всегда будет оставаться неизменным в будущем, тогда вам не нужно физически хранить это в базе данных вообще.
Но я сомневаюсь, что вы можете сделать такое предположение.Чтобы снизить стоимость хранения много повторяющихся строк, отделите цвет к своей таблице с тонким surrogate key (скажем, байтом или 16-битным int), а затем ссылайтесь на него (через FOREIGN KEY) из «большой» таблицы. Таким образом, вы не повторяете строки, вы повторяете (тоньше) целые числа. Это не вопрос нормализации (оба варианта «нормализованы»), но и оптимизация физического дизайна.
Однако, если есть другой атрибут, функционально зависящий от цвета, то у вас обязательно должна быть отдельная таблица. В противном случае будет transitive functional dependencyПК -> цвет -> другой, нарушающий 3NF.
Например:
Бранко: «Если можно предположить факт, его не нужно хранить». Если предположения должны быть встроены в код или сохраняться в базе данных? Я бы сказал, это зависит. Сначала взвесьте потенциальные издержки и риски, связанные с необходимостью повторного выпуска кода, если/при изменении допущений, или необходимости обновлять элемент данных в базе данных. – sqlvogel
@sqlvogel Я делал довольно философский момент. «Предположение», которое я описал, никогда не меняется. Конечно, реальный мир работает по-разному. –
+1: Интересная идея - ссылка на другую таблицу. Это стандартная практика? – Jim
- 1. Проверка столбца, если оно имеет одинаковое значение во всех строках
- 2. Выберите столбец, который имеет значение
- 3. Как сохранить значение переменной во всех записях в clistview
- 4. Как проверить, что переменная имеет одинаковое значение для всех агентов?
- 5. получить столбцы, которые имеют одинаковое значение во всех строках
- 6. Sencha Touch: измените значение во всех записях в магазине
- 7. Как мы обычно обрабатываем последовательности в Java?
- 8. как мы обрабатываем пробелы в названии сайта
- 9. QML: модель GridView имеет одинаковое значение для всех детей. Item
- 10. Обновление поля во всех записях в elasticsearch
- 11. Сценарий для переформатирования строки во всех записях
- 12. Почему cattr_accessor моей озабоченности получает одинаковое значение во всех подклассах?
- 13. Проверьте, имеет ли столбец таблицы значение
- 14. Как найти, какой столбец имеет значение Мы хотим?
- 15. Как обновить столбец таблицы SQL, который имеет данные xml
- 16. Как выбрать строки таблицы, имеющие одинаковое значение?
- 17. заказа, где столбец содержит одинаковое значение
- 18. Как проверить, не имеет ли столбец значения (пусто) во всех строках таблицы данных в C#
- 19. Rails 3. Как выполнить действие сохранения во всех записях?
- 20. Как мы обрабатываем небольшие классы при использовании стратифицированной перекрестной проверки
- 21. Boostrap grid - одинаковое значение для всех разрешений
- 22. SQL-запрос: поиск уникальных комбинаций чисел во всех записях
- 23. запись в один столбец не existng во всех записях другого столбца
- 24. Как узнать, имеет ли ассоциативный массив одинаковое значение для всех повторений?
- 25. REST вызывает процесс входа в систему, как мы обрабатываем перенаправления?
- 26. Как выбрать значение поля, если поле во всех дочерних записях одинаково
- 27. Обновление Не null во всех столбцах таблицы
- 28. Как изменить атрибут во всех строках таблицы?
- 29. Как идентифицировать столбец с именем существует во всех таблицах?
- 30. hive "\ n" значение в записях
1) 'Это не означает, что вы можете найти несколько строк, которые имеют одинаковое значение. (Вот для чего нужны строки.) 'Я прошу о том, чтобы значение столбца было одинаковым для всех строк. Не все строки имеют одинаковые значения во всем столбце. 2) «Отношение 1-N будет идентифицироваться функциональной зависимостью да, но вы можете иметь отдельную таблицу для отношения 1-1. Это был мой смысл, но, возможно, я не был ясен – Jim
* «Я прошу о том, чтобы значение столбца было одинаковым для всех строк». * И это именно то, о чем я говорю. Для этого нужны строки. У вас нет повторяющегося атрибута. –