我是SQLite的新手,我在使用上述程序创建数据库模式时有这个任务。
我只想询问是否允许在单个数据库中的不同表中提供相同的属性。让我在一个数据库中给出两个表的SQLite语句。
BEGIN TRANSACTION;
/* Create a table called Employee */
CREATE TABLE Employee(Name text, Phone_number varchar);
/* Create a table called Company */
CREATE TABLE Company(Name text, Country text);
我指的是在两个表中出现两次的属性Name。它会影响或扭曲数据库中的一些SQL查询执行吗?
答案 0 :(得分:0)
如果您已经尝试过(在command-line shell或SQLFiddle上),您会发现它是允许的。
但是,它可能会影响您的查询。 当您连接这两个表时,您必须明确指定所需的表列:
CREATE TABLE Employee(ID, CompanyID, Name, Phone_number);
CREATE TABLE Company(ID, Name, Country);
SELECT Company.Name,
Employee.Name,
Phone_number
FROM Company
JOIN Employee ON Company.ID = Employee.CompanyID;
另一方面,如果您有外键关系,则在两个表中使用相同的名称可以简化连接条件:
CREATE TABLE Employee(EmployeeID, CompanyID, Name, Phone_number);
CREATE TABLE Company(CompanyID, Name, Country);
SELECT Company.Name,
Employee.Name,
Phone_number
FROM Company
JOIN Employee USING (CompanyID);