簡體   English   中英

像一個桌子一樣使用兩個桌子

[英]to use two tables like a one table

我有兩個不同類型的用戶表。 其中之一是注冊用戶的普通用戶表。 另一個用於未注冊的用戶。 我需要將這兩個表與其他表一起使用。 例如;

已注冊的用戶用戶ID,用戶名,密碼,名稱,性別,電子郵件,IP

unregistered_users:用戶ID,名稱,性別,IP

some_table: ID,標題,內容,用戶ID

如何將some_table與用戶表連接?

我有一些意見,但沒有一個人覺得不對。

  1. 使用所有具有空值的表regUser列和unRegUser列並連接兩個表等。這種方式不合適,因為所有表都有很多空單元格。
  2. 如果所有表(如some_table)都添加一列userType,並且每個查詢都有“ if”。 但是這種方式很長,而且會浪費資源。
  3. if userid列類型將為字符串(r13,u32-r:registered,u:unregistered)並使用“ substring”和“ if”,但這更加困難
  4. 創建一個類似“ id,type,userid”的連接表,並使用此ID代替userid。 但也需要“如果”
  5. 創建一個具有空值的連接表,例如“ id,regUser,unRegUser”。

或創建另一個用戶表以將兩個用戶表組合在一起。 當然,我們又有空列。

您認為哪種方法最好? 或任何人有不同的意見。

當內容相同時,為什么要嘗試通過創建兩個表來復制它,而可以創建一個稱為用戶的表

create table users
(
user_id int not null auto_increment primary key
username varchar(500),
password varchar(500),
email  varchar(400),
ip     varchar(800),
reg_status enum(0,1),
);

那么您可以使用此user_id並在輔助表中引用它。

您可以在reg_status上建立查詢

0 - Unregisterd
1 - Registered

如果要更多標准化表格

然后你可以使用兩個表

create table users
(
user_id int not null auto_increment primary key
email  varchar(400),
ip     varchar(800),
reg_status enum(0,1),
);


create table registered_users
(
login_id int not null auto_increment primary key
username varchar(500),
password varchar(500),
user_id - F.k (Foreign Key)
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM