powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Уникальное значение по двум полям
16 сообщений из 16, страница 1 из 1
Уникальное значение по двум полям
    #39788729
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, а как сделать в таблице уникальное поле из двух полей? И при этом должен быть и инкрементный ключ.
Сейчас в таблице 3 поля:
Код: plaintext
ID, FileID, SheetID

ID ключевое, а вот по FileID и SheetID - необходимы уникальные значения.
т.е. записи
Код: plaintext
1.
1, 1, 1
2, 1, 1
не должны присутствовать,
а вот,
Код: plaintext
1.
1, 1, 1
2, 1, 2
имеют право, они уникальные.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788738
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600, из FileID и SheetID сделать уникальный индекс. Генерацию уникальных сочетаний сделать самому, либо кодом VBA, либо макросом данных (не пробовал, но думаю возможно).
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788758
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем нужен синтетический ключ, если есть уникальная комбинация полей? Причём поля - заведомо числовые...
Удалите ID, а пару (FileID, SheetID) сделайте первичным ключом.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788759
yoichi730
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключевое поле может быть сложным, то есть состоять из нескольких. Access умеет это делать и следить за уникальностью, но тогда поле ID станет рудиментом. Если база крутиться на SQL, то (в mssql) ключевое поле может быть одним единственным, однако уникальных может быть и несколько. На крайний случай можно сделать следующее:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  ID    FileID      SheetID 
1-1       1            1
1-2       1            2
..
..
..
1-10      1            10
..
..
..
..
50-33    50            33


ну или как-то так..
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788766
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЗачем нужен синтетический ключ, если есть уникальная комбинация полей?Суррогатный ключ удобней для однозначной идентификации, в смысле работать с ним. ИМХО
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788779
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургСуррогатный ключ удобней для однозначной идентификации, в смысле работать с ним.Если надо однозначно идентифицировать запись ЭТОЙ таблицы - да.
Однако мы имеем дело со ссылочной таблицей, организующей M:N, в которой идентификация записи этой таблицы в принципе лишена смысла. А как только с ней связываются референсные таблицы - надобность в идентификации отпадает. Поэтому в данном конкретном случае суррогатный ключ скорее всё же избыточен, и лучше использовать естественный составной ключ.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788808
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaОднако мы имеем дело со ссылочной таблицейНу если так
Akinaв данном конкретном случае суррогатный ключ скорее всё же избыточен то да.
Мне почему-то показалось изначально что это типа нумерация какая-то, параграфы и подпункты.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788856
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina...Поэтому в данном конкретном случае суррогатный ключ скорее всё же избыточен, и лучше использовать естественный составной ключ.
Вот, я обычно так всегда и делаю. А тут как-то не сходится, т.е. мне надо в в другой таблице, скажем, tblSheetPreferences нужно указать какие-то характеристики Листа. И когда я буду вносить записи, то как по таблице понять, что лист относится к конкретному файлу?

т.е. в справочнике tblSheets :
Код: plaintext
1.
2.
ID, FileID, SheetID
1, 1, 1   <-- Лист1 файла 1
2, 2, 1   <-- Лист1 файла 2

а уже в tblSheetPreferences :
Код: plaintext
1.
2.
Sheet_ID, ColumnWidth, RowCount
1, 25, 500   <-- эта запись относится к FileID=1
1, 25, 500   <-- эта запись относится к FileID=2

поэтому, меня и смутила неоднозначность составного ключа, что решил добавить еще и счётчик в tblSheets.
Выходит, что не нужен он тут?
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788865
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600, в таблице tblSheetPreferences определи свой ключ (он для правильной работы запросов)
palladin600А тут как-то не сходится, т.е. мне надо в в другой таблице, скажем, tblSheetPreferences нужно указать какие-то характеристики Листа. И когда я буду вносить записи, то как по таблице понять, что лист относится к конкретному файлу?А что тут сложного? везде идёт связь один ко многим от файла к настройкам. Надеюсь ты не напрямую собрался изменять данные. Ну и в таком случае в запросе можно построить так чтобы было видно что куда.

palladin600счётчик в tblSheets.
Выходит, что не нужен он тут?не нужен
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788869
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600а уже в tblSheetPreferences :
Код: plaintext
1.
2.
Sheet_ID, ColumnWidth, RowCount
1, 25, 500   <-- эта запись относится к FileID=1
1 2, 25, 500   <-- эта запись относится к FileID=2
что-то тут не так

palladin600т.е. в справочнике tblSheets :
Код: plaintext
1.
2.
ID, FileID, SheetID
1, 1, 1   <-- Лист1 файла 1
2, 2, 1   <-- Лист1 файла 2
А тут зачем 2 SheetID (это же ID и SheetID)? Оставь один SheetID, он же суррогатный ключ
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788871
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургpalladin600, в таблице tblSheetPreferences определи свой ключ (он для правильной работы запросов)
А смысл?
Тут я бы хотел тоже сделать составной ключ из двух полей. Выходит, при таком каркасе этого не выйдет?
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788872
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600, если же SheetID это номер в коллекции таблиц Excel, то его не следует использовать для связи, оно идёт как свойство. Суррогатные ключи используются только для идентификации записи (связи) и наполнять их каким-либо другим смыслом не следует.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788873
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600А смысл?некоторые запросы без ключа/индекса работать правильно не будут. И редактироваться тоже.
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788876
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600Тут я бы хотел тоже сделать составной ключ из двух полей.как будешь заполнять?
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39788887
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600Тут я бы хотел тоже сделать составной ключ из двух полей.Как будешь связи строить?
...
Рейтинг: 0 / 0
Уникальное значение по двум полям
    #39789034
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
ну вот если бы был суррогатный ключ в tblSheets, то не пришлось бы делать уникальный ключ в tblSheetPreferences. Я бы просто на него сослался.
[IMG] http://www.picshare.ru/uploads/190320/XimKsk3r3I.jpg [/IMG]
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Уникальное значение по двум полям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]