Как я могу структурировать свои данные? - PullRequest
1 голос
/ 07 февраля 2012

У меня есть два класса (Book, Software), которые наследуются от класса Product.эти два класса имеют несколько полей, которые отличаются друг от друга.если я хочу сохранить данные для обоих этих классов в одной таблице, это приведет к тому, что некоторые столбцы будут иметь нулевые значения.

Если я сохраню данные в разных таблицах (таблица «Книги» и «Таблица программного обеспечения»), а затем захочу просмотреть эти данные в одном виде сетки, мне нужно будет объединить данные и затем загрузить их в вид сетки?

Я хотел бы добавить еще 2 класса (IndividualCustomer, WholesaleCustomer), которые будут наследовать класс Customer таким же образом, как указано выше.

, пожалуйста, ознакомьте меня с наилучшим подходом. Спасибовы

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

Я не программист C #, но я бы пошел с чем-то вроде

`products` table
 - product_id (pk)
 - title
 - price
 - etc

`products_software` table
 - software_id (pk)
 - product_id (foreign key, relates to a product_id)
 - serial_number
 - storage_media

`products_books` table
 - book_id (pk)
 - product_id (foreign key, relates to a product_id)
 - pages
 - author
3 голосов
/ 07 февраля 2012

В подобных ситуациях я создаю три таблицы: Продукт, Книга и Программное обеспечение.

В Product я добавлю PK и все общие поля; в Книге тот же ПК и книга конкретных полей; так же, как Книга для программного обеспечения.

Ассоциации между таблицами такого типа должны быть 1: 1.

1 голос
/ 07 февраля 2012

Книги и ПО не являются продуктами. Они просто разные категории.

Я бы создал несколько таблиц: Товары категории свойства PropertiesToCategories PropertiesToProducts

В этой форме вы можете прикрепить некоторые свойства к каждой категории, например: Книги имеют Автор, Название, Издатель

Если вы хотите добавить новый продукт, вам нужно сначала выбрать его категорию, а затем вы можете прикрепить доступные (для книг: автор, название, издатель) свойства к вашему новому продукту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...