我已经设计了一个使用SQLite数据库的网站。我没有使用一个大表,而是设计它,以便当用户注册时,为他们创建一个单独的表。每个用户可能会使用数百条记录。我这样做是因为我认为结构和访问会更容易。
我在本网站的其他问题上发现,一个表比为每个用户使用多个表更好。
是否值得重新设计我的网站,以便有一个大桌子而不是有很多桌子?虽然目前的方法仍在开发中,但目前的方法似乎运作良好,所以我不确定它在真实环境中的堆积效果如何。
问题是:在性能,效率,组织和空间方面,更改代码以便有一个大型数据库而不是许多个人数据库值得吗?
SQLite:创建用户的表格。
CREATE TABLE " + name + " (id INTEGER PRIMARY KEY, subject TEXT, topic TEXT, questionNumber INTEGER, question TEXT, answer TEXT, color TEXT)
SQLite:在帐户表格中添加帐户。
"INSERT INTO accounts (name, email, password, activated) VALUES (?,?,?,?)", (name, email, password, activated,)
请注意,如果有任何不同,我会在Flask中使用python。
修改
我也知道有这样的问题,但没有人说明优点或缺点是否值得。
答案 0 :(得分:1)
在面向对象语言中,您会为每个用户创建一个类吗?或者你会为每个用户提供一个类的实例吗?
每个用户只有一个表是一个非常糟糕的设计。
questionNumber
的所有消息?accounts
注册怎么办?不可否认,通过添加user_
前缀可以很容易地解决这个问题,但仍需要牢记这一点。lol; DROP TABLE accounts; --
的用户怎么办?查询参数是防止此类攻击的主要方法,不适用于表名。我可以继续。
请合并所有表格,并阅读数据库规范化。