2015-04-08 3 views
0

У меня есть небольшой проект ASP.NET MVC4 в Visual Studio 2013, который использует синтаксис Razor. Это веб-сайт для фиктивной компании по аренде частного самолета.Назначить 'рейс' зарегистрированному/зарегистрированному пользователю?

В настоящее время на моем сайте у меня есть:

  • Полнофункциональная log-in/ register функция (позволяет пользователям входить в систему/зарегистрироваться на сайте)
  • базы данных всех пользователей, которые зарегистрированы (только [email protected] пользователь может видеть это и способен edit/ create new/ delete пользователей)
  • База данных полетов (которые администратор может редактировать)

Вот Gist, что мои файлы проекта выглядит следующим образом: https://gist.github.com/anonymous/3528ab17e13c6d5b2460

Вот что мой текущий SystemUsers таблица выглядит следующим образом: http://gyazo.com/c5013d885723eae7bf578e01cbe1a39c

CREATE TABLE [dbo].[SystemUsers] (
    [Email]  NVARCHAR (50) NOT NULL, 
    [Password]  NVARCHAR (MAX) NOT NULL, 
    [PasswordSalt] NVARCHAR (MAX) NOT NULL, 
    [FirstName] NVARCHAR (MAX) NOT NULL, 
    [Surname]  NVARCHAR (MAX) NOT NULL, 
    [Age]   INT   NOT NULL, 
    [MobileNumber] NVARCHAR (12) NOT NULL, 
    [HomeNumber] NVARCHAR (12) NOT NULL, 
    PRIMARY KEY CLUSTERED ([Email] ASC) 
); 

и вот что мой FLightsTable выглядит следующим образом: http://gyazo.com/891bc17d709bdac4f5bfb443ffe6c5a3

CREATE TABLE [dbo].[FlightsTable] (
    [FlightID]  INT   NOT NULL, 
    [Departure]  NVARCHAR (50) NOT NULL, 
    [Arrival]   NVARCHAR (50) NOT NULL, 
    [NumberOfSeats] INT   NOT NULL, 
    [NumberOfFlights] INT   NOT NULL, 
    PRIMARY KEY CLUSTERED ([FlightID] ASC) 
); 

В чтобы назначить flight на user Предполагаю, что я должен создать e новая таблица в моей базе данных и сохранить Email пользователя FlightID? Если да, то как мне получить эту информацию от обе таблицы и поместить ее в мою новую таблицу?

Я хочу, чтобы пользователи имели возможность выбрать полет и забронировать его, что означает, что количество пробелов на полете уменьшится.

Где будет указано это действие (что означает получение информации из двух таблиц и сохранение его в отдельной таблице)? Какие дополнительные файлы мне нужно создать, чтобы сделать это возможным?

ответ

0

Да, связующий стол для бронирования рейсов представляется подходящим, с первичными ключами из двух таблиц в отношениях многих и многих. Вероятно, вам также нужна другая информация, относящаяся к конкретному бронированию в этой таблице, например, количество зарезервированных мест, резервирование даты, использование кредитной карты, скидочный купон и т. Д.

Вы бы добавили строки в эту таблицу, если клиент книги полета. Вы будете читать строки из этой таблицы при показе заказов клиентов или определить количество мест, оставшихся на полете (что-то вроде: availableSeats = Flight.NumberOfSeats - bookings.Where(b => b.FlightId == Flight.FlightId).Select(b => b.NumberOfSeats).Sum();). Вы должны обновлять строки в этой таблице, когда клиент хочет изменить/отменить бронирование или когда рейс отменен.

+0

Привет, спасибо, что ответ. У меня есть некоторые вопросы, когда дело доходит до этого решения. Как заставить мою «третью таблицу» содержать два первичных ключа во многих отношениях? Можете ли вы предоставить мне пример того, как это работает? Кроме того, когда клиент хочет сделать заказ, возможно ли им использовать выпадающее меню, которое читает строку из «FlightTable», а затем назначает это для их бронирования (например, «таблицу бронирования»)? Если да, можете ли вы связать меня в правильном направлении с точки зрения того, как это сделать? Благодаря! –

+0

Я точно не понимаю ваш вопрос. Предположительно, вы знаете PK пользователя, который зашел в систему, и когда они выбирают рейс, вы знаете идентификатор полета того, который они выбрали, не так ли?Затем, когда они выбирают некоторое количество мест и нажимают «забронировать этот рейс», вы добавляете строку в свой ссылочный стол с адресом электронной почты и идентификационным номером рейса вместе с другой информацией о бронировании. Это относительно базовый дизайн базы данных, и, вероятно, слишком широкий вопрос, чтобы спросить о переполнении стека ... –

Смежные вопросы