我正在开发旅行应用程序,所以我们必须处理不同的网络服务,如 GTA、Gallileo、Kuoni 等。获取有关酒店详细信息的信息。每个 Web 服务都有自己的城市代码和城市名称列表。我想设计一个表格来存储来自不同网络服务的城市详细信息,经过一些研究,我来到了这两种方法
第一种方法
CREATE TABLE [dbo].[City](
[CityID] [int] NOT NULL,
[CountryCode] [varchar](5) NOT NULL,
[AppCityCode] [varchar](10) NOT NULL,
[AppCityName] [varchar](200) NOT NULL,
[GTACityCode] [varchar](10) NULL,
[GTACityName] [varchar](200) NULL,
[GWSCityCode] [varchar](10) NULL,
[GWSCityName] [varchar](200) NULL,
[KuoniCityCode] [varchar](10) NULL,
....
....
....
....
....
....
)
在这种方法中,当添加新的 Web 服务时,会添加与 Web 服务相对应的两列(城市代码和城市名称),由于这种修改,存储过程和前端应用程序代码将会发生变化。在文本框中加载城市时不会重复
第二种方法 WSSupplier 表用于存储 Web 服务详细信息,例如 GTA、Gallileo..
CREATE TABLE [dbo].[WSSupplier](
[SupplierID] [smallint] NOT NULL,
[SupplierName] [varchar](100) NOT NULL
)
CREATE TABLE [dbo].[City](
[CityID] [int] IDENTITY(1,1) NOT NULL,
[AppCityCode] [varchar](20) NULL,
[AppCityName] [varchar](150) NULL,
[CountryCode] [varchar](10) NULL,
[WSSupplierID] [smallint] NULL,
[WSCityCode] [varchar](20) NULL,
[WSCityName] [varchar](150) NULL
)
在第二种方法中,城市将使用相应的 Web 服务供应商 ID 逐行添加如果有新的 Web 服务出现,那么我不必修改表结构或在前端应用程序中。在加载城市时,我必须使用 DISTINCT 在文本框或前端下拉列表中加载唯一城市
在这两种方法中,我都使用 Appcitycode 和 Appcityname 这将在应用程序中加载城市文本框或下拉菜单。在选择 Appcityname 时,它将获取相应的 Web 服务城市代码并将其作为请求发送到 Web 服务以搜索特定城市的酒店。
我想知道哪个是最好的方法,或者是否有其他好的方法