|
|
|
constraints
|
|||
|---|---|---|---|
|
#18+
есть две таблицы и вопросы по ним: 1) стоит ли вводить countryID (с автоинкрементом например) и делать привязку по countryID вместо cntry_code (аргументировать) 2) foreign key constraint: хочу добиться следующего: а) при внесении/исправлении записи в таблицу population проверяется наличие соотв. cntry_code в таблице country b) удаление записей в таблице country запрещено, если в таблице population имееются записи с соотв. cntry_code c) исправление cntry_code в таблице country запрещено, если в таблице population имееются записи с соотв. cntry_code d) исправление cntry_name в таблице country разрешено выполняются ли заданные условия в моих таблицах (код см. ниже) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 12:59:25 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
mini.weblab, в таблице country должно быть Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 13:01:08 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
У нас реализован первый вариант, т.е. с числовым ID. Но у нас это сделано в первую очередь для унификации кода клиентской программы, чтобы работа со всеми справочниками была одинаковой. Разумеется, foreign key создан. Записи из таблицы стран никогда не удаляются и практически никогда не редактируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 13:06:54 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
mini.weblab, Кстати, у стран бывают двухбуквенные, трехбуквенные и числовые (из трех цифр) коды (например, ОКСМ ). В разных документах используются разные коды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 13:12:30 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо, я начну с двухбуквенного , а там посмотрим (если что, сделаем дополнительную табличку-переходник) двухбуквенный вариант: интуитивный + более экономичный (таблиц будет много, по разным статистическим показателям) =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 13:46:49 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
mini.weblabинтуитивныйВ лучшем случае для десятка-другого стран. Разгадайте интуитивно код "EH" :)mini.weblabболее экономичныйЧто так два байта, что эдак. Еще может быть вариант, когда существует ссылка на объект, которого нет в стандарте. У нас, например, есть ЕС (Евросоюз), у которого нет соответствия в ОКСМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 13:59:46 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
И VARCHAR(45) не хватит даже для краткого наименования. Можете смело делать VARCHAR(255). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 14:01:35 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
автор1) стоит ли вводить countryID (с автоинкрементом например) и делать привязку по countryID вместо cntry_code (аргументировать) Да, стоит. Первичный ключ не должен иметь никакой смысловой нагрузки предметной области. cntry_code нужно в таком случае оставить как альтернативный ключ (UNIQUE). Кстати, кодировок стран несколько, так что будет 2-3 таких ключа. автор2) foreign key constraint: хочу добиться следующего: а) при внесении/исправлении записи в таблицу population проверяется наличие соотв. cntry_code в таблице country b) удаление записей в таблице country запрещено, если в таблице population имееются записи с соотв. cntry_code c) исправление cntry_code в таблице country запрещено, если в таблице population имееются записи с соотв. cntry_code d) исправление cntry_name в таблице country разрешено Вот от этого всего и позволяет избавится суррогатный первичный ключ по автогенерируемому номеру. После его введения тебе останется только создать обычный FOREIGN KEY CONSTRAINT с population на country. авторвыполняются ли заданные условия в моих таблицах (код см. ниже) Это: Код: plaintext 1. 2. 3. А это: Код: plaintext 1. "Не вполне" потому что ты можешь поменять записи так, что в итоге всё будет хорошо, но в процессе -- нет. Да и вообще -- cntry_code у тебя -- PRIMARY KEY (cntry_code), а PK менять нельзя . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 14:02:56 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
MasterZiv, спасибо, будем исправлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 15:27:13 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
мысль по поводу PK поняла, но все-таки сделать первичный буквенный ключ (аналогия автоинкремента) очень заманчиво, именно из-за большей интуитивности и относительно небольшого размера таблицы. Все-таки US, DE, FR более привычно чем 78, 2, 211 =) и опять же ничто не мешает, добавить стандартные сокращения, например cntry_code / cntry_name / std01 / std02 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 16:23:41 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
mini.weblabмысль по поводу PK поняла, но все-таки сделать первичный буквенный ключ (аналогия автоинкремента) очень заманчиво, именно из-за большей интуитивности и относительно небольшого размера таблицы. Все-таки US, DE, FR более привычно чем 78, 2, 211 =) Так в чём проблема сделать это альтернативным ключём? Всё будет привычно, интуитивно, и т.п. Лишний JOIN -- не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 16:47:07 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
MasterZiv, а как это сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 17:05:16 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
mini.weblab, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 17:19:41 |
|
||
|
constraints
|
|||
|---|---|---|---|
|
#18+
еще вопрос по загрузке данных, возвращаемся к таблице population / cntry_id / year / population предположим что регулярно поступают файлы формата / cntry_code / cntry_name / year / population как обычно загружаются данные ? какие могут быть варианты ? пока думаю сделать так, но не знаю хорошо это будет или нет: 1) создаем загрузочную базу со структурой таблиц соответствующей структурам загружаемых файлов 2) таблицы в загрузочной базе будут пустыми (только структуры) 3) получаем файлы - грузим в загрузочную базу 4) из загрузочной базы грузим все в основную базу 5) убеждаемся, что все хорошо 6) стираем данные в загрузочной базе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 23:18:45 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=138&tid=1833259]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
19ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 303ms |

| 0 / 0 |
