标签: foreign-keys

如何在不破坏旧数据和新数据之间关系的情况下匿名新日志记录?

我正在生成有关用户操作的日志记录.出于隐私原因,这些需要在N天后进行匿名处理.但是,我还需要针对此匿名数据运行报告.

我希望真实用户A的所有操作都在匿名日志中的假用户X下列出 - 一个用户的记录仍必须保留日志中一个(假的)用户的记录.这显然意味着我需要在真实用户和假用户之间进行一些映射,我在匿名化新记录时会使用这种映射.当然,这完全违背了匿名化的要点 - 如果有映射,则可以恢复原始用户数据.

例:

用户FrankMüller买了3罐汤.

三天后,用户FrankMüller要求退还3罐汤.

当我对第二个日志条目进行匿名化时,第一个日志条目已经被匿名化了.我仍然希望两个日志记录都指向同一个用户.嗯,这在实践中对我来说几乎是不可能的,所以我想使用一些分割数据的方法,希望能让我在数据中保持尽可能多的完整性.也许使用日志作为数据仓库 - 将所有内容分解为事实并接受无法分析某些维度的事实?

你以前遇到过这种情况吗?我有什么选择?我显然需要做出某种妥协 - 事实证明对你有效吗?如何充分利用这些数据?

logging privacy foreign-keys

2
推荐指数
1
解决办法
407
查看次数

外键和索引问题

我正在使用SQL Server 2008 Enterprise.我有一个表,其中一个列是指另一个表中的另一个列(在同一个数据库中)作为外键,这里是相关的SQL语句,更详细地说,表[Foo]中的列[AnotherID]指的是另一个table [Goo]的列[GID]作为外键.[GID]是表[Goo]上的主键和聚簇索引.

我的问题是,通过这种方式,如果我没有显式地在[Foo]上的[AnotherID]列上创建索引,是否会为[Foo]上的[AnotherID]列自动创建索引 - 因为它的外键引用列[表[Goo]上的GID]已经有主群集密钥索引?

CREATE TABLE [dbo].[Foo](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [AnotherID] [int] NULL,
    [InsertTime] [datetime] NULL CONSTRAINT DEFAULT (getdate()),
 CONSTRAINT [PK_Foo] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[Foo]  WITH CHECK ADD  CONSTRAINT [FK_Foo] FOREIGN KEY([Goo])
REFERENCES [dbo].[Goo] ([GID])
ALTER TABLE [dbo].[Foo] CHECK CONSTRAINT [FK_Foo]
Run Code Online (Sandbox Code Playgroud)

乔治,提前谢谢

indexing foreign-keys sql-server-2008

2
推荐指数
1
解决办法
1063
查看次数

在MySQL中使用InnoDB时,明确定义*every*外键是否常见?

直到最近,当我决定开始担心参照完整性等时,我一直在使用MyISAM并且没有定义明确的外键关系.

我正在研究一个存储战斗事件,战斗机统计数据的数据库,所以我认为这符合使用InnoDB和明确定义外键的标准.

我有一个战斗机表,其中有多个列是外键.我想知道是否建议始终明确定义外键关系,无论表中引用了多少外键?

特别是,对于这个表我有:

CREATE TABLE `fights` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `event_id` int(10) unsigned DEFAULT NULL,
  `winner_id` int(10) unsigned DEFAULT NULL,
  `referee_id` int(10) unsigned DEFAULT NULL,
  `championship_match` enum('1','0') DEFAULT NULL,
  `weight_class` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

我打算做referee_id,winner_id,event_id所有外键各自表ID列.这是要走的路吗?或者,为了性能原因,我是否应该以关系完整性为代价限制明确定义的外键数量?

mysql innodb foreign-keys

2
推荐指数
1
解决办法
209
查看次数

SQL条件关系

我想出了两种相同想法的方法,并希望通过使用一种方法来避免任何明显的陷阱.我有一个表(tbl_post),其中一行可以与其他表(tbl_category,tbl_site,tbl_team)有很多关系.我有一个关系表来加入这些,但不知道哪个结构,条件或直接?希望以下内容能够解释......

tbl_post (simple post, can be associated with many categories, teams and sites)
* id
* title
* content

tbl_category
* id
* title
* other category only columns

tbl_team
* id
* title
* other team only columns

tbl_site
* id
* title
* other site only columns

----------------------------------------------------------
tbl_post_relationship
* id (pk)
* post_id (fk tbl_post)
* related_id (fk, dependant on related_type to either tbl_category, tbl_site or tbl_team)
* related_type (category, site or team)

____________________________________
|id|post_id|related_id|related_type|
|--|-------|----------|------------|
| …
Run Code Online (Sandbox Code Playgroud)

sql database database-design foreign-keys relational-database

2
推荐指数
1
解决办法
1194
查看次数

如何正确设计数据库?外键与二键?

这里有一些通用表,我试图完全理解如何正确设置数据库表.这些设置是否正确?我希望能够尽快查找用户的项目和项目详细信息.此示例的FYI ItemDetailsX不共享相同的数据字段.

我有点卡在外键和辅助键上.什么时候使用辅助密钥和外键?

tbl_Users 1:*tbl_Item //关系

tbl_Item 1:1 tbl_ItemDetail1&tbl_ItemDetail2 //关系

tbl_Item 1:N tbl_ItemDetail3 //关联

tbl_Users

-UserID - PK

tbl_Item

-ItemID - PK

-UserID - FK

tbl_ItemDetail1

-ItemDetail1ID - PK //如果我有ItemID,我甚至需要这个吗?与...有1:1的关系

-ItemID - FK

-计数

-duration

-频率

tbl_ItemDetail2

-ItemDetail2ID - PK //如果我有ItemID,我甚至需要这个吗?与...有1:1的关系

-ItemID - FK

-开关

-温度

-电压

tbl_ItemDetail3

-ItemDetail3ID - PK //具有1:N的关系

-ItemID - FK

- 受控价值1

-Contrived Valu2

编辑:

感谢您的回复,我已更新原始帖子以正确反映我的数据库.

在我创建的数据库中,Item有~9项详细信息.每个项目的详细信息是5-15列数据.

有一个100列的表没有意义......?

database database-design foreign-keys

2
推荐指数
1
解决办法
2065
查看次数

将多个属性作为外键插入

我有2张桌子:LecturerDepartment.

Lecturer表包含以下列:

id, email, phone, expertise, dept_id.
Run Code Online (Sandbox Code Playgroud)

Department表有这些:

dept_id, dept_name, dept_code, dept_program.
Run Code Online (Sandbox Code Playgroud)

样本数据如下:

讲师

(id=1, email= a@a.com, phone= 9999, expertise= multimedia and programming, dept_id=1)
Run Code Online (Sandbox Code Playgroud)

部门

(id=1, dept_name=Computer Science, dept_code=CS, dept_program=Bachelor of Comp Science)
Run Code Online (Sandbox Code Playgroud)

专业知识专栏有几个值,一些讲师可能有超过5个专业领域,所以我认为我应该创建另一个专业知识表.但是如何将多种专业知识属性插入讲师表?

sql database-design foreign-keys

2
推荐指数
1
解决办法
604
查看次数

Oracle Sql:foreign-key也是主键语法

我只是有一个关于符号的快速问题.我现在有两张桌子.

这个有基本的动物信息:

 create table d_animals (
  an_id     integer     primary key
, an_gender varchar2(1) not null
, an_dob    date        not null
, an_name   varchar2(10)    not null
);
Run Code Online (Sandbox Code Playgroud)

这个是关于猫:

 create table d_cats (
       an_id                        integer     primary key
     , feline_leukemia_test_date    date        not null
     , an_id    foreign key references d_animals_(an_id)
     );
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试使用an_id作为d_cats中的主键,但也引用了d_animals表中的an_id.我为d_cats收到以下错误:

 ORA-00957: duplicate column name
Run Code Online (Sandbox Code Playgroud)

那我该怎么写这个呢?

另外,我不想为d_cats创建另一个列.我的教授希望我们只用an_id和feline_leukemia_test_Date写d_cats.谢谢.

sql oracle foreign-keys syntax-error primary-key

2
推荐指数
2
解决办法
2万
查看次数

外键列允许插入不在引用列中的值

我要表:

CREATE TABLE `artist` (
    `name`  TEXT NOT NULL,
    `gender`    TEXT NOT NULL,
    `city`  TEXT NOT NULL,
    PRIMARY KEY(name)
);
Run Code Online (Sandbox Code Playgroud)

create table artwork(
    title text,
    location text,
    artist text,
    primary key (title, artist),
    foreign key (artist) references artist(name)
    );
Run Code Online (Sandbox Code Playgroud)

'artwork'表中的'artist'列允许我插入不在引用列中的数据.

FOREIGN KEY约束还可以防止将无效数据插入到外键列中,因为它必须是它指向的表中包含的值之一.(c)W3school

我做错了吗?

sql sqlite foreign-keys

2
推荐指数
1
解决办法
978
查看次数

laravel外键列命名约定

我有一个LessonGroup模型,其表格是lesson_groups.如果我想使用此表id在另一个TABEL作为外键,我应该选择什么样的列名Laravel可以自动识别它作为一个外键lesson_group表?

lesson_groups
   id
   name
 -----------------------------------------
fields
  id
  //foreign key to lesson_groups(what should be the name of this column?)
  name
Run Code Online (Sandbox Code Playgroud)

model foreign-keys laravel

2
推荐指数
1
解决办法
4690
查看次数

在Laravel 5.2中无法使用外键进行迁移

我想创建两个表usersroles.我的代码如下:

2014_10_12_000000_create_users_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->integer('role')->unsigned();
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();

            $table->foreign('role')
                ->references('id')
                ->on('roles');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}
Run Code Online (Sandbox Code Playgroud)

2016_03_09_004256_create_roles_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateRolesTable extends Migration
{
    /**
     * Run the migrations. …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys database-migration laravel-5 laravel-5.2

2
推荐指数
1
解决办法
5250
查看次数