我正在设计一个数据库,请查看下表
所以基本上,这是一个健身应用程序。在创建用户的个人资料时,他必须决定他的“目标 s ”是什么。在我们的应用中,我们将目标列表显示为复选框,如果目标不在我们的列表中,则提供other
字段来键入“目标”。
在我们的表格中,goal_type
包含我们将以勾选框形式显示给用户的目标列表。
在profile_goal
中,它会包含从勾选框中选择的目标 s 用户列表,如果还有其他内容,那么也会包含该目标。
请注意,profile_goal
和goal_type
之间没有任何关系。我可以通过在one to one
表格中创建foreign_key
goal_type
表来建立profile_goal
关系。我没有这样做的原因是因为在某一天如果开发人员决定更改或删除goal_type
中的项目,那么它将影响到数千名选择该目标的用户。
例如,goal_type
名为reduce 5kg in one month
,有数千名用户选择此项;一段时间后,开发人员决定将其删除或将目标更改为eat 3 fruits this week
。现在,对于选择reduce 5kg in one month
的人来说,这是一场灾难。
我当前设计的缺点是,想象用户已经为goal_types
设置了other
并且还为profile_goal
指定了一些内容。因此,goal_type
中的所有4个目标都将在4行中提供。如果开发人员确实更改了goal_type
中的目标,那么在更改之前加载other
时,将无法在复选框中显示,应用程序会将其视为others
。然后我们有2 other
用户已经指定background-repeat: no-repeat;
min-height:768px;
height:auto;
background-attachment: scroll;
background-size: 100% auto;
background-image: url("../images/login/****.jpg");
!!
关于什么是最好的?
答案 0 :(得分:0)
如果不了解存储的值的类型,详细回答是很棘手的。尽管如此,有效表可能如下所示:
goal_type
( goal_type_id int auto_increment primary key
, goal_type varchar(50) not null unique
)
customer_goal
(customer_id int not null
,goal_type_id int not null
,created timestamp
,updated timestamp
,primary key (customer_id,gial_type_id)
);
我觉得很奇怪,我们会存储一种目标'而不是与customer_id一起的实际目标,但我们目前只有目标类型;没有'目标'表