Дизайн базы данных - PullRequest
       6

Дизайн базы данных

0 голосов
/ 18 сентября 2009

Я хочу самое лучшее решение для указанной ниже проблемы. Я использую SQL Server 2005 и asp.net 2.0.

У меня есть основная таблица, в которой хранятся все тестовые сценарии разных проектов. Из тестовых сценариев в главной таблице мне нужно создать модуль и добавить в него необходимые тестовые сценарии.

Дизайн пользовательского интерфейса: Создать новый модуль. Выберите необходимые контрольные примеры из основной таблицы. Добавьте контрольные примеры в модуль.

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

Для бывшей мастер-таблицы имеется 100 тестовых случаев. Я создаю 2 модуля. Модуль 1 имеет 40 контрольных примеров, выбранных из основной таблицы. Модуль 2 имеет 20 контрольных примеров, выбранных из основной таблицы.

Как мне спроектировать базу данных в таком сценарии?

Ответы [ 3 ]

4 голосов
/ 18 сентября 2009

Чтение Правила нормализации данных

РЕЗЮМЕ:

  1. 1NF Устранить повторяющиеся группы - создать отдельную таблицу для каждого набора связанных атрибутов,и присвойте каждой таблице первичный ключ.
  2. 2NF Устраните избыточные данные - если атрибут зависит только от части многозначного ключа, удалите его в отдельную таблицу.
  3. 3NF Устранить столбцы НетЗависит от ключа - если атрибуты не влияют на описание ключа, удалите их в отдельную таблицу........
1 голос
/ 18 сентября 2009

Чтобы получить что-то вроде 3-й нормальной формы, вам в основном нужно как минимум 3 таблицы.

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

Когда вы создаете новый модуль, вы собираетесь вставить новую строку в таблицу модулей. Для каждого теста, выбранного для этого модуля, вы вставите строку в таблицу test_modules. Каждая строка будет иметь FK для таблицы модулей (чтобы вы знали, к какому модулю она принадлежит) и FK для таблицы тестовых случаев (чтобы вы знали, что это за тестовый пример).

testcase Table (Master Table) {
    id
    test_case_name
}

modules table {
    id (PK)
    module_name (varchar)
    creater (varchar)
}

test_modules table {
    id (PK)
    testcase_id (FK to testcase.id)
    module_id (FK to modules.id)
}

Таким образом, чтобы получить контрольные примеры для определенного модуля, вы можете сделать запрос следующим образом:

select *
from modules m, testcase t, test_modules tmod
where m.id=tmod.module_id and tmod.testcase_id = t.id

Это ОЧЕНЬ упрощенный и неэффективный запрос, но он поможет вам начать работу.

0 голосов
/ 18 сентября 2009

«У меня есть мастер стол»

«Как мне создать базу данных?»

Два предыдущих ответа дали вам подробности, касающиеся оформления таблицы. Эти особенности будут полезны при разработке таблиц для хранения данных, относящихся к модулям и сценариям. Однако вам необходимо знать о нескольких других основах.

Дизайн вашей мастер-таблицы является частью дизайна базы данных. Если дизайн этой мастер-таблицы очень неудачен для проекта, который вы выполняете, то, в зависимости от обстоятельств, лучшим вариантом может быть редизайн мастер-таблицы.

Нормализация - не единственный способ найти хороший дизайн. В частности, приведенные к вам правила для 2NF и 3NF помогут вам избежать аномалий при выполнении вставок, обновлений и удалений в разрабатываемых вами таблицах. Но нопрмализация не поможет вам сделать выбор легче.

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

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