我有很多行为的故事。这些行为不是连续的(我不知道哪一个是第一个行为或第二个,第三个等等)。数据库设计问题
每个故事都以挑战结束。
,以表示我已经使用了下面的表格关系数据库中的所有:
Story
---------------------------------------
Id | PK
Name | String
FirstActId | FK to ACT table
Act
---------------------------------------
Id | PK
StoryId | FK to STORY table
Name | String
Description | Very long string
NextActionType | FK to ACTIONTYPE table
NextId | Its value depends on NextActionType
ActionType
---------------------------------------
Id | PK
Name | Values= 'Act', 'Challenge', 'Story'.
Challenge
---------------------------------------
Id | PK
Name | String
Description | Very long string
NextActionType | FK to ACTIONTYPE table
NextId | Its value depends on NextActionType
我用Story.FirstActId
知道这是故事的第一幕(我想说,"Select MIN(Id) from Act where StoryId = ?"
不起作用)。
然后,我用Act.NextId
知道该行为之后应该采取哪种行为或挑战。 Act.NextId
可以是一个行动PK或一个挑战PK或一个故事PK。这取决于Act.NextActionType
的值。
您认为如何?这是一个好的设计吗?
我的问题是我有挑战表与任何其他表没有任何关系。
UPDATE
换句话说,我需要一个系统,要知道接下来要去哪里。我将有以下几种情况:
故事 - > ACT->挑战 - >行为 - >新的故事 故事 - > ACT-> challente->新的故事
注意:行为可以比更一。
如果您不知道哪种行为是第一次,第二次等,您如何存储FirstActId? – 2011-04-27 13:25:26
我知道哪个行为是我添加故事和行为时的第一行为。我试图说:“从Story中选择MIN(Id)where StoryId =?”不起作用。 – VansFannel 2011-04-27 13:27:19