我想创建一个数据库,但每次我看看我需要什么以及如何去做,我认为不同的解决方案更好。我将在下面描述我的情况,并想知道什么是最好的方式去和为什么:关于数据库结构的建议
我目前有我的要求的Excel文件,它包含一个类别,子类别和各自的问题列表需要填写以及他们需要涉及的人员。这通常是将类别,子类别存储在表格中,将其链接到问题表格然后具有引用问题和人员表格的答案表格的简单情况。 这样:
Person:
personID: int identifier
personName: nvarchar(50)
Info:
infoID: int identifier
infoCat: nvarchar(50)
infoSubCat: nvarchar(50)
Question
questionID: int identifier
questionText: nvarchar(100)
questionInfo: FK relating to infoID
Answer:
answerID: int identifier
answerQuestion: FK relating to questionID
answerPerson: FK relating to PersonID
answerNumber: int
我面对这里虽然的问题是,答案并不总是将是一个数字。有一些问题需要我存储bit
或text
的值。
其他解决方案,我能想到的是denormalising问题,具有Info
和Question
表合并,然后Answers
表:
Answers:
AnswersID: int identifier
AnswersPerson: FK relating to PersonId
Answer1: int
Answer2: bit
Answer3: int
etc..
最后,我还可以使答案列有nvarchar
代替int
,并根据需要只存储numerical
和boolean
值。 (这看起来像是最简单的解决方案,但我需要定期备份不同数据库的答案,因为我无法控制,所以我必须确保这些值是可以转让的)
我在寻找什么对我来说最好的方法,如果它是我提到的那个或我无法想象的自己。
在此先感谢。
第二(非规格化)解决方案非常糟糕,不要这样做。查找'sql_variant',它可能会简化你的第一个解决方案。 – dasblinkenlight
@dasblinkenlight谢谢,我不知道'sql_variant'的存在。仔细研究之后,我将开始制定我的第一个解决方案,但用'sql_variant'替换回答中的'int'。 – Amber