Database 指示在数据库表中具有特殊处理的值的最佳方法是什么? 设置。
我有一个表,其中存储了一个游戏的物理项目列表。项目还具有类别的分层列表。示例基表: 项目 该系统目前运行在PHP和SQLite上,但数据库后端非常灵活,可能使用MySQL,前端可能最终使用javascript或Object-C/Swift 这个问题。 在上面的示例中,程序必须对每个顶级类别及其下面的项目进行不同的特殊处理。e、 武器和坐骑由不同的商人出售,可以携带武器,但坐骑不能 在代码中标记顶级层以进行特殊处理的最佳方法是什么Database 指示在数据库表中具有特殊处理的值的最佳方法是什么? 设置。,database,Database,我有一个表,其中存储了一个游戏的物理项目列表。项目还具有类别的分层列表。示例基表: 项目 该系统目前运行在PHP和SQLite上,但数据库后端非常灵活,可能使用MySQL,前端可能最终使用javascript或Object-C/Swift 这个问题。 在上面的示例中,程序必须对每个顶级类别及其下面的项目进行不同的特殊处理。e、 武器和坐骑由不同的商人出售,可以携带武器,但坐骑不能 在代码中标记顶级层以进行特殊处理的最佳方法是什么 虽然顶层类别相对固定,但我希望将它们保留在DB中,这样使用单个(
- 虽然顶层类别相对固定,但我希望将它们保留在DB中,这样使用单个(递归)函数更容易生成完整的可视化层次结构
- 几乎所有标识项的外键也可能标识项类别,因此将它们分隔到不同的表中似乎非常笨拙
您通常希望规划扩展和多功能性。您的程序可以根据需要将数据放在一起。一个组织良好的模式可以为您做到这一点。是否使用ORM并进行模型驱动的数据存储;或者从模式开始,然后基于模式构建模型;数据需求变得越复杂;这两种方法越相似。关系数据库旨在将实体存储在相互关联的表中。您经常会看到由部门、员工、工作等组成的公司数据库的示例,或者包含产品、客户、订单和供应商的商店的示例 查询此类数据库非常容易,例如获取在特定部门从事特定工作的所有员工:
select *
from employees
where job_id = (select id from job where name = 'accountant')
and dept_id = select id from departments where name = 'buying');
另一方面,您只有一个包含“things”的表。一行可以与另一行关联,意思是“属于类型”。你可以称这张桌子为“某物”。如果是关于公司数据的,我们就可以这样得到这份工作:
select *
from something
where description = 'accountant'
and parent_id = (select id from something where description = 'job');
因此,本署:
select *
from something
where description = 'buying'
and parent_id = (select id from something where description = 'department');
这两人仍需由在dep工作的人员联系
select *
from something
where description = 'buying'
and parent_id = (select id from something where description = 'department');