В унаследованном коде, который я рассмотрел, я нашел модель данных, которая создает логические поля соответствующих атрибутов, где только один из них должен быть истинным. Например:
create table MyTable (
id int primary key not null,
// more fields...
has_x bool not null,
has_y bool not null
);
Это глупо, потому что допускает потенциально противоречивые данные, если для обоих задано значение true. Я пытаюсь объяснить техническим, но не разработчикам, но не знаю, как объяснить, ПОЧЕМУ уместно изменить отношение «один ко многим» на определение, как показано ниже, когда «работает» оригинальный дизайн .
create table Attributes ( -- contains "x" and "y" records.
id int primary key not null,
name varchar(100) not null
);
create table MyTable (
id int primary key not null,
// more fields
attribute_id int not null foreign key references Attributes(id)
);
Есть ли термин для этих моделей моделирования данных?