SQL数据库通常由表组织。这些表具有存储信息的列和行。与只使用一个表相比,在一个表之间进行更改要花费更多的时间吗?我正在考虑将每个用户存储为不同的表。数据库中不会有太多用户。将会有一个密码列和一个其所有拥有的设备的列。这是不好的做法吗?另外:我应该怎么做呢?
可能的重复项:A seperate table for the posts which each user has liked - practical or not?
原因不符合我的需求:我不知道自己在做什么。
Proposed database design Traditional database design
Table: username123 Table: login (only one table)
Password: Appliances: User: Password: Appliance1 ...
----- ----- ----- ----- -----
----- ----- ----- ----- -----
----- ----- ----- ----- -----
... ...
答案 0 :(得分:1)
请勿将每个用户存储为不同的表!这是维护的噩梦,并且会损害性能。
您不能:
由于SQL的底层结构,通常将数据放入一个大表中而不是成千上万个小表中更为有效。
您有一个名为users
的实体。您应该有一个表来表示该实体。
答案 1 :(得分:0)
该表或一组相关表用于表示通常是逻辑的实体。该实体的不同成员,例如在这种情况下,不同的用户总是将这些用户作为数据行垂直存储在表中。拥有一个以上的表不是用于存储实体的成员,而是用于存储实体的超过1个项目的上限的部分。也就是说,用户(1个项目)必须存储在1个表中,例如用户,但用户电话号码可能超出每个用户1个项目的限制,最好将其存储在名为UsersPhoneNums的第二个表中,该表与表Users相关为Users.PrimaryID = UserPhoneNums.UsersPrimaryID(外键约束-中的任何行UsersPhoneNums(任何电话号码)都属于Users(用户)中的一行。如果不使用UsersPhoneNums表,则必须预设每个用户的电话号码数量(例如,家庭,公司和移动电话仅3个),并在表Users(例如WorkPhone,HomePhone和MobilePhone)中添加3列。