我有两个或更多的表,它们经常用于数据库视图中的联接,但它们没有任何共同的字段,因此我正在考虑添加相同的生成id键,以便插入到由3个不同表组成的"join_id“字段中,以便稍后加入。关于这类话题,我在网上搜索过,但没有看到太多的讨论,所以我很谨慎,不管这是不是好的实践。继续进行这种数据库操作安全吗?
以下是我想要完成的更多细节
假想
DEPT-A有自己的表,他们将用flds1、flds2、flds3、innerjoin_id创建一个新的行/记录
flds4,flds5,flds6,innerjoin_id都有他们自己的桌子。
部门-B需要看到部门-A flds1,flds2,flds3,并能够编辑各自的flds4,flds5,flds6.
flds1,flds2,flds3 (可编辑)
DEPT-B web输入表单将看到flds6 1-readonly,flds6 2-readonly,flds6 3-readonly,flds6 4-editable,flds6 5-editable,flds6 6-editable。
例子:
A进入“苹果”、“香蕉”、“樱桃”
B部需要看到苹果、香蕉、樱桃,然后在fld4 4-6中输入“apple香蕉”、"bananacherry“、"cherryapple”。
DEPT-B依赖于DEPT-A模组1-3
发布于 2022-09-24 03:43:47
专门为MySQL..。
当您连接两个表时,可以指定这些表是如何关联的。
... FROM cities JOIN countries ON countries.id = cities.country_id --这有很多:1关系(一个国家的许多城市)。... FROM a CROSS INNER JOIN b (没有任何与这两个表相关的内容) --这为您提供了a和b行的所有组合。在MySQL中,关键字CROSS是可选的。... FROM a LEFT JOIN b ON ... WHERE b.id IS NULL --它查找相应的b行缺失的a行。ON和WHERE对于INNER JOIN和CROSS JOIN具有相同的语义。但它可以帮助读者使用ON来显示关系(无论是否存在FOREIGN KEY),并使用WHERE进行‘过滤’。
任何数量的表都可以是JOINed,在SELECT中、在VIEW中、在UPDATE中或在DELETE中。
VIEW是SELECT的语法糖。基本上,所有适用于其中一种的规则都适用于另一种规则。
您的一个关键问题是:没有要求列在“公共”中以JOIN形式出现在它们上。你能猜出这种奇怪的连接会产生什么结果吗:
SELECT us_states.state_name
FROM us_states
JOIN countries ON us_states.state_name =
countries.country_name;提示:一个答案以'G‘开头。
发布于 2022-09-24 18:29:18
不能使用JOIN执行选择性权限。
使用VIEWs允许某些用户(基于登录到MySQL)编写vs只读和未见表列(S)。
对特定表的特定列上的用户使用GRANTs。
你也许可以用补助金来处理只读。但是,要允许用户只查看某些列,则可能需要单独的视图。
https://dba.stackexchange.com/questions/317333
复制相似问题