0

我是 sql 新手,所以我遇到了一个问题,我被要求为一个城市创建一个数据库。我用 DB Browser 创建的数据库。

数据库代码如下。当我尝试使用数据库向其中添加任何内容甚至查看它是否已成功创建时,我收到一个错误:

“数据库”附近的 SQL 逻辑错误。

我不确定我写的代码有什么问题。

CREATE DATABASE City;
CREATE TABLE IF NOT EXISTS "OfficialEmployee" (
    "EID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "City"  TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "StartWorkingDate"  TEXT NOT NULL,
    "Degree"    TEXT NOT NULL,
    "DID"   TEXT NOT NULL,
    PRIMARY KEY("EID"),
    FOREIGN KEY("DID") REFERENCES "Department"("DID") On delete cascade on update cascade
);

CREATE TABLE IF NOT EXISTS "ConstructorEmployee" (
    "EID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "City"  TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "CompanyName"   TEXT NOT NULL,
    "SalaryPerDay"  INTEGER NOT NULL,
    PRIMARY KEY("EID")
);

CREATE TABLE IF NOT EXISTS "Employee_Phones" (
    "EID"   INTEGER NOT NULL,
    "CellPhoneNumber"   INTEGER NOT NULL,
    PRIMARY KEY("EID","CellPhoneNumber")
);


CREATE TABLE IF NOT EXISTS "Department" (
    "DID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "Description"   TEXT NOT NULL,
    "ManagerID" INTEGER,
    PRIMARY KEY("DID"),
    FOREIGN KEY("ManagerID") REFERENCES "OfficialEmployee"("EID") On Update cascade on delete no action
);

CREATE TABLE IF NOT EXISTS "Neighborhood" (
    "NID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    PRIMARY KEY("NID")
);

CREATE TABLE IF NOT EXISTS "Apartment" (
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "Type"  TEXT NOT NULL,
    "SizeSquareMeter"   INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") on delete no action on update no action,
    PRIMARY KEY("Door","StreetName","Number")
);


CREATE TABLE IF NOT EXISTS "Project" (
    "PID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "Description"   TEXT NOT NULL,
    "Budget"    INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    PRIMARY KEY("PID"),
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") On Update no action on delete no action
);

CREATE TABLE IF NOT EXISTS "ProjectConstructorEmployee" (
    "EID"   INTEGER NOT NULL,
    "PID"   INTEGER NOT NULL,
    "StartWorkingDate"  TEXT NOT NULL,
    "EndWorkingDate"    TEXT,
    "JobDescription"    TEXT NOT NULL,
    FOREIGN KEY("PID") REFERENCES "Project"("PID") On Update Cascade on Delete No Action,
    FOREIGN KEY("EID") REFERENCES "ConstructorEmployee"("EID") On Update Cascade On Delete No Action
);

CREATE TABLE IF NOT EXISTS "Resident" (
    "RID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "CatalogID" INTEGER NOT NULL,
    PRIMARY KEY("RID"),
    FOREIGN KEY("Door") REFERENCES "Apartment"("Door") On update cascade on delete no action,
    FOREIGN KEY("StreetName") REFERENCES "Apartment"("StreetName") On Update cascade on delete no action,
    FOREIGN KEY("Number") REFERENCES "Apartment"("Number") On Update cascade on delete no action
);

CREATE TABLE IF NOT EXISTS "TrashCan" (
    "CatalogID" INTEGER NOT NULL,
    "CreationDate"  TEXT NOT NULL,
    "ExpirationDate"    TEXT NOT NULL CHECK(ExpirationDate>CreationDate),
    PRIMARY KEY("CatalogID")
);
CREATE TABLE IF NOT EXISTS "ParkingArea" (
    "AID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "PricePerHour"  INTEGER NOT NULL,
    "MaxPricePerDay"    INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    PRIMARY KEY("AID"),
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") On Update cascade on delete cascade
);

CREATE TABLE IF NOT EXISTS "CarParking" (
    "CID"   INTEGER NOT NULL,
    "StartTime" TEXT NOT NULL,
    "EndTime"   TEXT NOT NULL CHECK(StartTime<EndTime),
    "Cost"  INTEGER NOT NULL CHECK(MaxPricePerDay>Cost),
    "AID"   INTEGER NOT NULL,
    "MaxPricePerDay"    INTEGER NOT NULL,
    PRIMARY KEY("CID","StartTime"),
    FOREIGN KEY("CID") REFERENCES "Cars"("CID") On Update Cascade on delete cascade,
    FOREIGN KEY("AID") REFERENCES "ParkingArea"("AID") On Delete set null on update cascade
);



4

1 回答 1

0

我不相信您可以从 SQLite 的数据库中创建数据库

只需在命令行上执行此操作:

UNIX:$ touch my.db

视窗:c:> type nul > my.db

然后您可以使用 DB Browser 打开数据库

于 2019-12-06T17:52:54.073 回答