У меня есть таблица "Position" Wich Allready существуетНормализация базы данных: внешний ключ = первичный ключ?
- PositionID (PK) INT
- PositionText
- ...
Теперь я должен создать новую таблицу "PositionComment" (Мне не разрешено редактировать позицию в таблице, поэтому мне нужно создать новую). Соотношение 1: 0..1 (оно застраховано через код, что 1 позиция может содержать только 1 комментарий).
Так что я должен иметь первичный ключ в новой таблице - но:
Для правил нормализации:
Должен ли я сделать внешний ключ = первичный ключ, потому что 1: 0..1 например:
- PositionID (PK, FK для позиционно-таблицу)
- CommentText
ИЛИ
Должен ли я сделать собственный первичный ключ например:
- CommentID (PK)
- PositionID (FK для позиционно-таблицу)
- CommentText
Разница в том, что из-за того, что в первом предложении я использую другой ПК как ПК во второй таблице ... Но во втором предположении я имею двойную идентификацию ifme, потому что CommentID и PositionID будут уникальными для 1 строки ...
Как это сделать для нормализации и почему?
Что касается администраторов баз данных, то «гарантированный с помощью кода» _exactly_ равнозначен «не гарантируется вообще» :-) Однако, если вы сделаете его первичным ключом новой таблицы, оно будет гарантировано. Через БД. Где это должно быть. – paxdiablo
Я бы пошел со вторым вариантом. Что делать, если в будущем изменения меняются в зависимости от одного-двух сценариев? – danish