@Got_Oxidus
Учусь

Несколько элементов в ячейке БД ASP.NET?

Есть 3 таблицы:
  1. Пользователь

    Хранит данные о пользователе
    e3c85f00726ec1342cbe19f8f91f1ff208077025
    CREATE TABLE [dbo].[Users] (
        [Id]        INT           NOT NULL,
        [Login]     NVARCHAR (20) NOT NULL,
        [Password]  NVARCHAR (20) NOT NULL,
        [FirstName] NVARCHAR (15) NOT NULL,
        [SurName]   NVARCHAR (15) NOT NULL,
        [LastName]  NVARCHAR (15) NULL,
        [Status]    NVARCHAR (15) NOT NULL,
        [Balance]   INT           NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );


    Баланс - местные деньги (nullable - т.к. не у всех)

  2. Запись пополнения баланса
    be431e1c245b88782d63ba56f86a938fe6fb999d
    CREATE TABLE [dbo].[MoneyTrancfer] (
        [Id]     INT            NOT NULL,
        [UserID] INT            NOT NULL,
        [Amount] INT            NOT NULL,
        [Title]  NVARCHAR (150) NOT NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );


  3. Событие

    Цель: На какое-то событие нужно определённое кол-во человек. (За участие дают награду).
    c7cd71585cc1e583f388b60ed739e261015f15d8
    CREATE TABLE [dbo].[Event]
    (
    	[Id] INT NOT NULL PRIMARY KEY, 
        [Name] NVARCHAR(50) NOT NULL, 
    	[Reward] INT NOT NULL,
        [Вescription] NVARCHAR(150) NULL, 
        [Amount] TINYINT NOT NULL, 
        [EndTime] DATETIME NOT NULL
        
    )




Вопросы:
  1. Как сделать ссылку в таблице на User? (Заменить UserID)
  2. Как сделать несколько User-ов в одной ячейке?


P.S. На уровне БД или Модели, но что бы дальше в коде, можно было удобно работать.
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ответы на вопрос 2
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
1. Как сделать ссылку в таблице на User? (Заменить UserID)

Использовать JOIN
select Users.LastName, MoneyTrancfer.Amount
from MoneyTrancfer join Users on (MoneyTrancfer.UserID=Users .id)


2. Как сделать несколько User-ов в одной ячейке?

Лучше сделать дополнительную таблицу связи между двумя таблицами.
Ответ написан
@kttotto
пофиг на чем писать
Трудно понять, что именно Вы хотите. Вы лучше саму задачу расскажите.

В какой таблице надо сделать ссылку на пользователя? UserID это и есть ссылка, зачем ее заменять?
Что значит сделать несколько юзеров в одной ячейке? Наверное Вы имеете ввиду связь один-ко многим или многие-ко многим? Непонятно какую таблицу с какой и какой связью связать хотите.

Вы показываете БД, а Вы же наверное через EF делаете, покажите модели. Или Вам надо показать модели в коде как будут выглядеть? В общем ничего не понятно)

Продолжение:
Из комментариев я так понял, что Вы хотите знать как будут выглядеть модели в коде для EF. И еще раз посмотрев на Ваши таблицы, я понял, что Вы их не совсем верно составили.

В таблице User поле Balance, по всей видимости должен был указывать на таблицу Balance. В таком случае его надо было назвать BalanceId. Но опять таки, только для случаев, если у пользователя может быть только один баланс. Тогда в таблице Balance было не обязательно указывать на пользователя UserId.

Я примерно накидал как это будет в C#
public class User
	{
		public int Id { get; set; }
		public string Login { get; set; }
		public string Password { get; set; }
		public string FirstName { get; set; }
		public string LastName { get; set; }

		public virtual IEnumerable<Event> Events { get; set; } 
		public virtual IEnumerable<Balance> Balances { get; set; }

		public User()
		{
			Events = new List<Event>();
			Balances = new List<Balance>();
		}
	}

	public class Event
	{
		public int Id { get; set; }
		public string Name { get; set; }
		public DateTime EndTime { get; set; }

		public virtual IEnumerable<User> Users { get; set; }

		public Event()
		{
			Users = new List<User>();
		}
	}

	public class Balance
	{
		public int Id { get; set; }
		public decimal Amount { get; set; }

		public int UserId { get; set; }
		public virtual User User { get; set; }
	}

Обратите внимание, что пользователи связаны с балансом как один-ко многим: один пользователь может иметь много счетов, но счет может иметь только одного пользователя. А события с пользователями связаны как многие-ко многим, т.е. один пользователь может быть прикреплен ко многим событиям и в одном событии может участвовать много пользователей. Для такой связи EF создаст дополнительную таблицу.

Вообще, мой совет, не кидайтесь сразу в код, почитайте базу по БД и EF или вот хотя бы от сюда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы