Как эффективно моделировать наследование в базе данных?
Правильный дизайн базы данных ms-sql-server не имеет ничего общего с .net правильным дизайном объектов.
Если object-oriented вы планируете использовать database-design базу данных для чего-либо, кроме sql-server простой сериализации ваших inheritance объектов (например, для отчетов, запросов, использования dotnet нескольких приложений, бизнес-аналитики .net и т. д.), то я не рекомендую inheritance какое-либо простое сопоставление mssql объектов с таблицами. .
Многие database-design думают о строке в таблице object-oriented-design базы данных как об объекте database-modeling (я много лет размышлял в oop этих терминах), но строка inheritance не является объектом. Это inheritance предложение. Отношение к .net-framework базе данных (т. е. таблица) представляет sql-server собой некоторую констатацию oop факта о мире. Наличие строки object-oriented-design указывает на то, что факт inheritance верен (и наоборот, ее отсутствие database-modeling указывает на то, что факт inheritance ложен).
При таком понимании inheritence вы можете видеть, что один object-oriented тип в объектно-ориентированной object-oriented-design программе может храниться .net-framework в дюжине различных отношений. А sql-server самые разные типы (объединенные dotnet наследованием, ассоциацией, агрегацией dotnet или совсем неаффилированные) могут ms-sql-server частично храниться в одном object-oriented отношении.
Лучше всего спросить dotnet себя, какие факты вы хотите dotnet хранить, на какие вопросы database-modeling вы хотите получить ответы, какие oop отчеты вы хотите генерировать.
После mssql создания надлежащего дизайна inheritence БД можно легко создать запросы/представления, которые object-oriented позволят вам сериализовать dotnet ваши объекты в эти отношения.
Пример:
В oop системе бронирования отелей .net-framework вам может понадобиться сохранить inheritance тот факт, что Джейн Доу забронировала inheritance номер в отеле Seaview Inn inheritence на 10-12 апреля. Является object-oriented ли это атрибутом сущности inheritence клиента? Является ли это database-design атрибутом объекта отеля? Является dotnet ли это объектом бронирования dotnet со свойствами, включающими .net-framework клиента и отель? Это может oop быть любой или все эти вещи database-design в объектно-ориентированной .net системе. В базе данных это object-oriented не так. Это просто голый oop факт.
Чтобы увидеть разницу, рассмотрим dotnet следующие два запроса. (1) Сколько ms-sql-server забронировано мест в гостиницах object-oriented Джейн Доу на следующий год? (2) Сколько object-oriented-design номеров забронировано на database-design 10 апреля в отеле Seaview inheritence Inn?
В объектно-ориентированной oop системе запрос (1) является sql-server атрибутом сущности клиента, а object-oriented-design запрос (2) — атрибутом сущности database-modeling отеля. Это объекты, которые database-modeling раскрывают эти свойства в oop своих API. (Хотя очевидно, что inheritence внутренние механизмы получения ms-sql-server этих значений могут включать object-oriented ссылки на другие объекты.)
В sql-server системе реляционной базы oop данных оба запроса будут database-design проверять отношение резервирования, чтобы mssql получить свои числа, и концептуально inheritance нет необходимости беспокоиться mssql о какой-либо другой «сущности».
Таким mssql образом, правильная реляционная .net-framework база данных создается путем mssql хранения фактов о мире, а dotnet не попыток хранения сущностей object-oriented-design с атрибутами. И как только inheritence он будет правильно спроектирован, можно inheritence будет легко сконструировать sql-server полезные запросы, о которых .net-framework и не мечтали на этапе проектирования, поскольку database-modeling все факты, необходимые для ms-sql-server выполнения этих запросов, находятся dotnet на своих местах.
.net
sql-server
oop
inheritance
database-design
Как эффективно моделировать наследование в базе данных?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.