Начало » Использование СУБД » Microsoft SQL Server » SQL server  база данных  (Проблема с темой первичных и внешних ключей) 
	
		
		
			| SQL server  база данных  [сообщение #1584] | 
			Fri, 10 February 2023 12:55   | 
		 
		
			
				
				
				
					
						  
						Rinat25178
						 Сообщений: 4 Зарегистрирован: February 2023 
						
					 | 
					Junior Member  | 
					 | 
		 
		 
	 | 
 
	| 
		Добрый день, у меня проблема я создаю базу данных для портфолио и хочу сделать это так что бы это выглядело нормально и адекватно, моя проблема заключается в том что сослаться на таблицу необходимо ссылаться на первичный ключ или уникальность но уникальность  не могу использовать так как в следующей таблице у меня будет ругаться я смогу использовать значение только один раз. Например у меня есть ад должности который должен быть ключём и название должности которое мне надо будет отдать в таблицу для того что бы указать кто этот человек, но я не могу задать ему айди так как SQL  ругается на инт с датой (несовместимость), вопрос такой будет ли целесообразно создать две таблицы с одним столбцом чтобы задать первичный ключ на должность и ещё на кое что мне надо подскажите пожалуйста.
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	
		
		
			| Re: SQL server  база данных  [сообщение #1589 является ответом на сообщение #1587] | 
			Fri, 10 February 2023 17:20    | 
		 
		
			
				
				
				
					
						  
						BlackEric
						 Сообщений: 393 Зарегистрирован: June 2022 
						
					 | 
					Senior Member  | 
					 | 
		 
		 
	 | 
 
	
		Тут бы по теории бд что-то почитать. 
Если вкратце: 
1. Есть таблица Users (ID, Name). Вот в ней ID должен быть уникален. 
2. Делаем таблицу Phones (ID, UserID, PhoneNumber). В ней ID тоже уникален, но это ее ID, а к пользователю она привязывается через поле UserID. И этот UserID в таблице Phones уже не уникален. Это просто внешний ключ на таблицу Users. 
А для избежания дублирования телефонов у одного юзера можно сделать уникальный индекс по полям UserID, PhoneNumber.
		
		
		[Обновления: Fri, 10 February 2023 18:59] Известить модератора  
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 03:57:58 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00964 секунд 
 |