Стратегия реализации составного ключа, вторая часть которого редко является различительной. Сначала код Entity Framework

У меня есть следующий сценарий:

Сущность Atom обычно уникальна и может храниться в базе данных с использованием одного поля AtomID в качестве первичного ключа.. In rare cases theAtomneeds to be split. In that case a second record must be created in the database table with an identicalAtomIDbut a discriminatingSplitID`.

Итак, в основном мне нужен составной ключ из AtomID и SplitID, где SplitID редко будет различать. Я бы не хотел терять функцию AutoID, которую предлагает база данных SQLServerCompact4, но именно это происходит, когда я определяю составной ключ для Atom Entity в Fluid API.

Каков наилучший подход к этой проблеме?


comment
вторая запись должна быть создана в таблице базы данных Вы имеете в виду таблицу Atom? Значит, у разделения одинаковые поля?   -  person Gert Arnold    schedule 10.12.2012
comment
Когда таблица изначально заполняется или добавляется, Atoms уникальны. Однако позже ошибка может привести к необходимости разделить атом в двух разных записях, которые, конечно, будут иметь разные значения для других полей. Но первостепенно то, что я вижу, что записи когда-то были одни.   -  person Dabblernl    schedule 10.12.2012
comment
Я не вижу другого пути, кроме самореферентного FK.   -  person Gert Arnold    schedule 10.12.2012


Ответы (1)


Вы должны создать новую таблицу с внешним ключом, AtomID и различающим SpiltID, чтобы показать связь между ними.

person Bhushan Firake    schedule 09.12.2012
comment
Разве это не потребует использования соединения каждый раз, когда я хочу запросить таблицу Atoms? Это кажется неэффективным, учитывая, что атом редко будет разделен. - person Dabblernl; 09.12.2012
comment
Я реализовал это так. Посмотрим, что он сделает с производительностью. - person Dabblernl; 10.12.2012