标签: database

DBMS中的非平凡功能依赖

请帮我在下表中找出非平凡的功能依赖?

A.            B.              C
1             1               1
1             1               0
2             3               2
2             3               2
Run Code Online (Sandbox Code Playgroud)

并解释其背后的基本概念.谢谢,,

database relational-database functional-dependencies

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

在数据库中存储合规性的条件逻辑

我正在创建广告系统,应该在ATM上显示.目前,我必须建立一个数据库结构,用于存储广告,ATM和客户合规性.

广告系统必须根据ATM和客户选择广告.

关键是客户没有严格定义.它可以使用其任何属性(卡号,帐户,客户端ID,客户端年龄等)进行过滤.例如:

  1. 在ATM = 1 ADV = 2时,如果客户卡是'1111%',则应显示
  2. 在(1,2)中的ClientID时,应显示ATM = 1 ADV = 3以外的所有ATM


如何将这些数据存储在关系数据库中?

我有一个解决方案,但我不喜欢它,我会创建一个表,SQL将保存原因.例如:

广告表
Adv_ID
Terminal_ID
状态(值可以是:允许/拒绝)
规则(这里将写入SQL过滤器,例如:"卡像'1111%'和client_id!= 10230")
screen_id(必须在哪个页面上显示此adv )订单(优先级)

你有什么其他的建议?

database oracle database-design ads data-structures

5
推荐指数
1
解决办法
290
查看次数

在没有存储过程,触发器或UDF的情况下实施超类型和子类型数据完整性

我经营一家小型食品生产企业,我需要管理客户订单.我已经构建了我的业务这方面的概念数据模型,但我需要一些关于如何在RDMS中完全实现它的指针.

作为第一步,我提出了下面给出的逻辑模型.我对数据建模的了解有限,因此我的图表中可能存在错误,但希望它能传达我的意图.请注意,这仅仅是较大模式的简化部分,为简单起见,我仅提供相关表格.

数据库架构图

数据模型简要介绍

  • 客户Ordr可以拥有一个或多个OrdrItems
  • OrdrItem可以是FoodItem或ComboItem
  • ComboItem是两个或更多FoodItems的逻辑分组

我在MySQL中实现了上面的模式,我编写了一些小程序来用客户订单填充表.这可以完成工作,但没有太多考虑数据完整性.我注意到,通过此实现,一些数据完整性规则不会在数据库级别强制执行.

例如,FoodItem是OrdrItem的子类型.对于FoodItem中的每一行,OrdrItem中必须只有一个对应的行.但是,在其当前实现中,我可以从FoodItem中删除一行,从而在OrdrItem中留下一行而在其中一个子类型表中没有相应的行.这应该是不允许的.

一些进一步的数据限制

  • 订单必须至少有一个关联的"订单商品"(即订单不能为空)
  • 订单商品必须是FoodItem或ComboItem的一个关联子类型(即,OrderItem不能同时是FoodItem和ComboItem).
  • 未来可能会出现一些进一步的限制因素

我希望将这些数据完整性规则融入到数据库中,这样我就不必担心自己在每个新客户端应用程序中执行它们,抛弃脚本或我写的伪劣SQL语句.我怀疑,如果我不在数据库级别做出这些保证,那么我将极大地增加遇到数据完整性问题的可能性.

这个问题

我对存储过程,触发器和用户定义的函数只有最微弱的了解.我得到的印象是,部分或全部这些功能可以帮助我实现我想要的目标.但是,如果我能完成检查约束,外键和相对简单的功能,我很乐意走这条路.基本上,我希望尽可能地限制复杂性,如果没有保证,不要引入每个漂亮的数据库功能.是否有可能确保我想要的数据完整性,而无需借助存储过程,触发器,用户定义的函数和其他更深奥的数据库功能?

我愿意使用MySQL或Postgresql来实现我的解决方案,因为我对两个系统都有基本的工作知识.

最后,如果这种对数据完整性的方法被认为是过度的,或者如果有一个更实用但稍微不完美的解决方案,我也会对此持开放态度.

mysql sql database postgresql database-design

5
推荐指数
1
解决办法
330
查看次数

Postgresql:数据库不接受命令以避免环绕数据丢失

创建/删除/更新查询时出错:

错误:数据库不接受命令以避免数据库"mydb"中的环绕数据丢失提示:停止postmaster并使用独立后端来清空该数据库.您可能还需要提交或回滚旧准备的事务.

因此,数据库被阻止,只能执行SELECT查询.

数据库的大小为350 GB.1个表(my_table)有大约10亿行.

系统:"x86_64-unknown-linux-gnu上的PostgreSQL 9.3.4,由gcc(GCC)4.4.7 20120313(Red Hat 4.4.7-4)编译,64位"

postgresq.conf的一些设置:

effective_io_concurrency = 15           # 1-1000; 0 disables prefetching
autovacuum_vacuum_cost_delay = -1

#vacuum_cost_delay = 0                  # 0-100 milliseconds
#vacuum_cost_page_hit = 1               # 0-10000 credits
#vacuum_cost_page_miss = 10             # 0-10000 credits
#vacuum_cost_page_dirty = 20            # 0-10000 credits
#vacuum_cost_limit = 200 
Run Code Online (Sandbox Code Playgroud)

我不使用准备好的交易.但是使用基本的存储过程(这意味着,自动转换,对吧?)每天50mln次.

Сurrently"自动清理:真空分析公共.MY_TABLE(防止环绕)"被perforing,这是近12小时数查询活动.

据我所知,没有真空吸尘器的问题,对吗?

如何解决这个问题并在将来防止这种情况?请帮忙 :)

故事的结尾(约一个月后) 现在我的大表被数千个表分区.每个小桌子都抽真空得快得多.Autovacuum配置设置得更接近默认值.如果需要,我可以再次设置得更加激进,但到目前为止数十亿行的数据库工作得很好.

因此,该主题的问题不应再出现.

ps现在我正在将Postgres-XL视为数据可扩展性的下一步.

database postgresql rdbms vacuum

5
推荐指数
1
解决办法
6997
查看次数

Postgresql:尝试获得过去10天的平均值

Select avg(last_10_count) AS last_10_avg
(Select count(*)
from dim_user
where effective_date ::date > current_date -10
group by effective_date ::date) AS last_10_count
Run Code Online (Sandbox Code Playgroud)

当我只运行内联查询时,我得到了所需的结果,但是当我运行整个查询时,它会抛出以下错误:

ERROR: function avg(record) does not exist
LINE 1: Select avg(last_10_count) AS last_10_avg
HINT: NO function matches the given name and arguement types.
      You might need to add explicit type casts.
************Error***************
ERROR: function avg(record)  does not exit
SQL state: 42883
Run Code Online (Sandbox Code Playgroud)

mysql sql database postgresql

5
推荐指数
1
解决办法
6020
查看次数

如何通过两列中的外键来汇总列?

目前我正在使用一个名为的表来实现下面的结果league_standing,并在每次比赛后更新它.我希望能够对表进行一次查询matches.

在此输入图像描述

Teams在主场和客场两次互相比赛.请注意team_id两列home_team_idaway_team_id

+----------------------------------+
|              Matches             |
+----------------------------------+
| id                               |
| league_id (FK League)            |   
| season_id (FK Season)            |
| home_team_id (FK Team)           |
| away_team_id (FK Team)           | 
| home_score                       |
| away_score                       |
| confirmed                        |
+----------------------------------+
Run Code Online (Sandbox Code Playgroud)

这是我尝试但失败的原因:

select team.name, HomePoints + AwayPoints points
from team join (
    select team.id, 
        sum(case when home.home_score > home.away_score then 3
            when home.home_score = home.away_score then 1 else 0 end) HomePoints, …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

5
推荐指数
1
解决办法
699
查看次数

Sql批量复制截断十进制

当我使用批量复制从C#DataTable向Sql Server 2005插入十进制值时,值被截断而不是舍入.

  • DataTable中的数据类型是Decimal.
  • 数据库中的数据类型是十进制(19,3)
  • DataTable中的值为1.0005
  • 数据库中的值插入是1.000(我预计1.001)

我正在使用的代码非常简单:

var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, null) { DestinationTableName = tableName};
bulkCopy.WriteToServer(dataTable);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

c# sql database sql-server datatable

5
推荐指数
1
解决办法
2803
查看次数

用于测试MaxMind GeoIP DB的IP地址

我正在尝试使用MaxMind GeoIP(精简版)数据库。

部分原因是尝试确定我是否可以进行可靠的单元测试。

对于单元测试,我需要有一些IP地址,我可以始终依靠它发送相同的信息。

大多数IP地址都会四处移动,我假设它们在GeoIP数据库中的流动性甚至更高,但是是否有我可以合理依靠的IP地址(无论出于何种原因)?

database ip unit-testing geoip maxmind

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

ORA-12528:TNS监听器:所有适当的实例都阻止新连接.实例"CLRExtProc",状态为UNKNOWN

如果我尝试以db用户身份登录,我收到此错误.如果lsnrctl运行状态,我会收到以下错误.
DB这些年来一直很好,并且突然停止工作.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ABC.LOCAL)(PORT=1521)
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date                19-MAY-2014 12:18:17
Uptime                    0 days 0 hr. 22 min. 51 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   D:\Oracle\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File         d:\oracle\administrator\diag\tnslsnr\abc\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ABC.LOCAL)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "devdb" has 1 …
Run Code Online (Sandbox Code Playgroud)

database oracle database-administration

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

是否存在具有位置的数据库 - >根据IANA时区数据库的时区名称

在我的脚本(PHP)中,我对数据库中的每个位置使用tz数据库标签:http: //en.wikipedia.org/wiki/Tz_database

我正在进入来自世界各地的一系列地方(国家,省,州,市等).对于每一个地方,我发现很难知道IANA时区数据库中的哪个标签可供使用.

在维基百科上搜索位置给出了时间偏移量(UTC + n)和时区缩写(EST等),但既不能帮助知道在tz数据库中使用哪个条目.

例如:华盛顿特区尽可能地使用"America/New_york".
德克萨斯州达拉斯使用'America/Chicago'(除非我弄错了!)

有一个非洲小国,其首都和最大城市都不在tz数据库中.使用哪个tz条目?

某处必须有一个数据库,或者一个资源可以清楚地将地球上的每个位置(国家,州,省,市等)链接到tz数据库中的特定条目.我在哪里可以找到它?

database timezone iana

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