SQL-建立表格-1到3

最大功率

我想要这个设置:

TABLE [group] :
[group_id] INT IDENTITY(1,1) --as pkey,
[member_one] INT NOT NULL --as fkey [member].[member_id],
[member_two] INT NULL --as fkey [member].[member_id],
[member_three] INT NULL --as fkey [member].[member_id],
...

TABLE [member] :
[member_id] INT IDENTITY(1,1) --as pkey,
[group_id] INT NOT NULL --as fkey [group].[group_id],
...

用词:我和成员有小组。每个成员只有一个小组。

编辑1:每个组至少有一个成员,member_one是领导者,不能更改。每个小组可能有无限数量的成员,但是只有一个到三个成员(包括领导者)可以被我们称为“总参谋部”。---

如果我想同时创建一个小组和一个领导者,该怎么办?没有领导者,我就无法创建组;没有领导者,我就无法创建领导者。我不想在两个表中都删除“ NOT NULL”。

我不知道如何使用存储的proc,因此,如果它使用它(我不说应该使用它),那就容易吧!

提前致谢 !

博格丹·萨林(Bogdan Sahlean)

我将使用以下数据逻辑模型:

Group(GroupID - PK, ...)
GroupMemberType(GroupMemberTypeID - PK, Name, IsHeadStaff)
    Example: 
        1 - Leader - 1
        2 - Power member - 1
        3 - Standard member - 2
    Reason: this way we can add easily [new] types
Member(MemberID - PK, ..., GroupID - FK, GroupMemberTypeID - FK)

如果一个组只能有一个领导者,那么我将创建一个唯一的过滤索引(假设GroupMemberTypeID = 1-Leader

CREATE UNIQUE NONCLUSTERED INDEX INF_Member_GroupID_GroupMemberTypeID1
ON dbo.Member (GroupID)
WHERE GroupMemberTypeID = 1 -- Leader

要检查是否将当前插入和/或更新的成员分配给一个组,并且对于当前组,最多可以有3名总参谋部,我将使用AFTER INSERT/UPDATE触发器:

CREATE TRIGGER trgIU_Member_CheckMax3HeadStaff
ON dbo.Member
AFTER INSERT, UPDATE
AS
BEGIN

IF EXISTS(
    SELECT *
    FROM dbo.Member m JOIN dbo.GroupMemberType gmt ON m.GroupMemberTypeID = gmt.GroupMemberTypeID
    WHERE m.GroupID IN (SELECT i.GroupID FROM inserted i)
    AND gmt.IsHeadStaff = 1
    GROUP BY m.GroupID
    HAVING COUNT(*) > 3
)
BEGIN
    ROLLBACK
    RAISERROR('One group can have maximum three head staff members,', 16, 1)
END

END

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

建立 html 表格行到 python

来自分类Dev

需要在3列中建立表格

来自分类Dev

HTML表格到SQL表

来自分类Dev

HTML表格到SQL表

来自分类Dev

使用表格建立表格

来自分类Dev

尝试使用 %ROWTYPE 在 Oracle PL/SQL 中的不同模式中建立表格时出错

来自分类Dev

如何动态建立表格

来自分类Dev

如何建立回馈表格

来自分类Dev

尝试与SQL和Entity Framework建立0..1:1的关系

来自分类Dev

SQL表无法建立

来自分类Dev

建立表格时发生错误?

来自分类Dev

建立表格时发生错误

来自分类Dev

如何建立从本地到SQL Azure数据库的安全连接字符串

来自分类Dev

从VBA到(Google)Cloud SQL数据库建立ADODB连接的方法是什么?

来自分类Dev

JDBC 无法建立到 SQL Server 的 SSL 连接 (Domino Java Agent FP 9)

来自分类Dev

等待操作超时从 Azure Function App 建立到 SQL Server 的连接

来自分类Dev

如何建立以下SQL查询

来自分类Dev

需要帮助建立SQL查询

来自分类Dev

SQL Server如何建立查询?

来自分类Dev

SQL和PHP帮助!!从1个表格插入4个表格?更新

来自分类Dev

尝试使用Tablesorter即时动态建立表格

来自分类Dev

无法建立html / css内嵌表格

来自分类Dev

尝试在Angular中动态建立表格

来自分类Dev

获取AJAX退货,合并并建立表格

来自分类Dev

Google表格SQL查询

来自分类Dev

Google表格SQL查询

来自分类Dev

将参数从表格1传递到表格2

来自分类Dev

在stimulsoft报告上建立到sql服务器错误26的连接时发生与网络相关或特定于实例的错误

来自分类Dev

尝试连接到 MySQL 服务器:建立到 SQL Server 的连接时发生与网络相关或特定于实例的错误