我对数据库设计有点新意,所以我要求一些建议或某种好的模式。
情况是,有一个数据库,几个表和许多用户。如果用户可以同时与数据库交互,我应该如何设计数据库,或/和我应该使用哪些类型的查询来使其工作?我的意思是,他们可以访问并可以更改同一组数据。
我在考虑交易,但我不确定,如果这是正确的/好的/唯一的解决方案。
更新:
许多人指的是数百甚至数千。客户端将通过PHP中的WWW页面连接到MySQL。他们将使用以下操作:插入,更新,删除和选择,有时加入。这是一个5-20个客户端和1-2个管理员的小型数据库。客户将更新并选择信息。我正在考虑在$ _SESSION中存储一些信息的交易。
答案 0 :(得分:2)
一种非常有效的简单方法是行版本控制。
实施例
CREATE TABLE myTable (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
vs INT NOT NULL,
)
INSERT INTO myTable VALUES (1, 'Sebastian', 0)
-- first user reads, vs = 0
SELECT * FROM myTable WHERE id = 1
-- second user reads, vs = 0
SELECT * FROM myTable WHERE id = 1
-- first user writes, vs = 1
UPDATE myTable SET name = 'Juan Sebastian', vs = vs + 1 WHERE id = 1 AND vs = 0
(1 row affected)
-- second user writes, no rows affected, because vs is different, show error to the user or do your logic
UPDATE myTable SET name = 'Julian', vs = vs + 1 WHERE id = 1 AND vs = 0
(0 rows affected)
答案 1 :(得分:0)