SQLite个人图书数据库设计评论

voase2hg  于 2023-01-26  发布在  SQLite
关注(0)|答案(2)|浏览(126)

我想为我的书,最终为我的视频游戏和电影建立/管理一个数据库。在我开始填充表格之前,什么是批评,批评和指针?

BOOK (
    book_id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    title TEXT NOT NULL,
    active_ind INTEGER NOT NULL DEFAULT 1,
    read_ind INTEGER NOT NULL DEFAULT 0
)

AUTHOR (
    author_id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    name TEXT NOT NULL
)

FORMAT (
    format_id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    format TEXT NOT NULL 
)

ISBN (
    isbn_id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    isbn TEXT NOT NULL
)

BOOK_FORMAT (
    book_id INTEGER REFERENCES BOOK (book_id),
    format_id INTEGER REFERENCES FORMAT (format_id)
)

BOOK_AUTHOR (
    book_id INTEGER REFERENCES BOOK (book_id),
    author_id INTEGER REFERENCES AUTHOR (author_id)
)

BOOK_FORMAT_ISBN (
    book_id INTEGER REFERENCES BOOK (book_id),
    format_id INTEGER REFERENCES FORMAT (format_id),
    isbn_id INTEGER REFERENCES ISBN (isbn_id)
)

我对ISBN结构有疑问。我想添加一本书的出版日期,但我不知道在哪里。

e37o9pze

e37o9pze1#

我的回答有点模糊,因为我不确定您在这个项目中的意图是什么,它是否只是一个爱好,或者是将数据库专业知识添加到您的专业证书中的前奏。
顺便说一句,许多数据库系统不像SQLite,不需要在主键上加NOT NULL,但是SQLite文档说SQLite需要,所以你不需要改变。
图书和版式之间以及图书、版式和ISBN之间似乎有两种不同的关系。我不确定您在这里的意图是什么,而且我也不是ISBN方面的主题Maven。BOOK_FORMAT所服务的目的是什么,而BOOK_FORMAT_ISBN所不服务的目的是什么?
您没有外键(REFERENCES约束)。这与我设计过的每个数据库都不同,尽管就我所知,它可能适合您的情况。通常,当关系是多对多或三元关系时,关系是用联接表表示的,正如您所做的那样。如果您需要表示多对一关系,您会发现将其嵌入到实体表中比为关系创建单独的表更方便。
学习数据库,试错法是一种非常昂贵的方法,除非你不珍惜自己的时间。虽然你不需要在投入之前掌握一整本理论教科书,但我建议你至少在学习项目的同时开始学习数据库背后的理论。与计算的其他方面相比,数据库并不复杂。但是他们有点抽象。2我的经验是,程序员切入到数据库时,他们倾向于在具体细节方面思考得很好,但在整体抽象结构方面思考得有点差。3你的经验可能不同。
面向对象的建模是许多程序员获得的一种更强大的抽象工具。不幸的是,数据建模和对象建模常常导致完全不同的思维模式,许多程序员发现数据建模难以精确掌握,因为对象建模对他们是如此的有用。
另一种帮助你学习的方法是看看其他人解决你同样问题的方法。有一个组织叫做Database Answers,它提供了一个包含数百个示例数据库模型的库。它可以here访问。如果你导航到“Libraries”,我相信你会找到一些与你的项目重叠的示例。对它们持保留态度。一个人的最佳实践并不总是适合另一个人的项目目标。
最后,我将向您指出我在大约7年前给出的一个问题的答案,这个问题可能与您的探索相关,也可能不相关,这是每个开发人员都应该知道的关于数据库的知识。

kqqjbcuj

kqqjbcuj2#

如果你想添加图书出版日期,那么你创建了tbl_Publication表,并修改了你的所有表,如下所示,请按照行业标准,这里所有的代码tbl是代表这是表名

tbl_Book (
    Book_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    Title TEXT NOT NULL,
    Active_Ind INTEGER NOT NULL DEFAULT 1,
    Read_Ind INTEGER NOT NULL DEFAULT 0
)

tbl_Publication (
    Publication_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    Publication_Name TEXT NOT NULL
)

tbl_Author(
    Author_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    Author_Name TEXT NOT NULL
)

tbl_Format (
    Format_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    Format TEXT NOT NULL 
)

tbl_ISBN (
    ISBN_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    ISBN TEXT NOT NULL
)

tbl_Book_Full_Details(
    Book_FD_Id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL,
    Book_Id INTEGER REFERENCES tbl_Book(Book_Id),
    Author_Id INTEGER REFERENCES tbl_Author(Author_Id),
    Format_Id INTEGER REFERENCES tbl_Format (Format_Id),
    ISBN_Id INTEGER REFERENCES tbl_ISBN (ISBN_Id),
    Publication_Id INTEGER REFERENCES tbl_Publication (Publication_Id),
    Publication_Date DATETIME
)

相关问题