0

Я собираюсь сделать проект, в котором яНаследование в базе данных в SQL-сервере

Task Entity и может быть несколько типов задач, и пусть все они имеют разные поля друг от друга. Итак, как я могу управлять подобным подходом в sql?

Как это

Task (abstract class) 
    Change Engine Oil (child class) 
    Meet James (child class) 

так и в описанном выше случае каждый дочерний класс имеет другой тип свойства

ответ

1

Вы можете думать иметь 2 таблицы для начала - Задачи и TaskEntityDetails.

Задачи таблица будет иметь 2 колонки - TaskId (первичный ключ) и Task

TaskEntityDetails таблица будет иметь 4 колонки - идентификатор (первичный ключ), TaskId (Foreign Key), поле, значение.

Поле столбца будет хранить все поля для TaskID в строках вместо того, чтобы иметь их как отдельные столбцы. Столбец значений будет иметь значение, соответствующее полю для каждого TaskID.

Ваша таблица будет выглядеть следующим образом:

ID TaskID Field   Value 
1  1   StartDate  2014-01-01 
2  1   EndDate  2014-01-31 
3  1   Contact  ABC 
4  2   StartDate  2014-01-01 
5  2   TaskName  XYZ 

Вы можете использовать PIVOT оператора, если вы хотите получить данные. Таким образом, вы можете избежать наличия нескольких значений NULL в своей таблице.

+0

Если мы рассмотрим ваше решение, мы собираемся разместить почти все данные в таблице «TaskEntityDetail». это хорошая практика? – Ancient

+0

То, что я предложил, это базовая структура для начала. Вы всегда можете идти вперед и иметь отдельную таблицу для полей, а также иметь свои ключи в главной таблице. –

+0

Хорошо, можете ли вы также привести пример своего второго решения – Ancient

 Смежные вопросы

  • Нет связанных вопросов^_^