- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有下表:
create table Section (
id integer not null primary key,
book_id integer not null foreign key references Book (id),
title varchar(100) not null,
page_start varchar(10) not null,
page_end varchar(10) not null
... remaining fields ...
)
请注意,起始页和结束页字段是 varchars。这样我就可以包括通常使用罗马数字的序言中的页码。
我的问题是:什么是修改此表并编写应用程序的有效方法,以便:
牢记以下条件/事实:
我最终可能会在不同的平台上用几种不同的语言实现它,所以代码不可知的伪代码将是首选。
因为我要处理成千上万条记录,所以我不能仅以编程方式遍历所有记录来执行排序等操作。所以一些工作需要在数据库端进行。
使用 njk 的查找表的想法,我们有类似的东西:
SELECT id, book_id, title, page_start, page_end,
COALESCE(RN_Lookup_End.value - RN_Lookup_Start.value + 1, CAST(page_end AS integer)-CAST(page_start AS integer) + 1) as number_of_pages
FROM
Section
LEFT JOIN RN_Lookup AS RN_Lookup_Start ON Section.page_start=RN_Lookup_Start.key
LEFT JOIN RN_Lookup AS RN_Lookup_End ON Section.page_end=RN_Lookup_End.key
ORDER BY
book_id,
CASE WHEN RN_Lookup_Start.value IS NOT NULL
THEN -1
ELSE 0
END, -- roman page numbers come before normal page numbers
COALESCE(RN_Lookup_Start.value, page_start), COALESCE(RN_Lookup_End.value, page_end)
如果我想遍历所有按页码排序的书。这样看起来对吗?
想了想,对表格做如下改动会不会更好:
create table Section (
id integer not null primary key,
book_id integer not null foreign key references Book (id),
title varchar(100) not null,
page_start integer not null,
page_end integer not null,
is_front_matter bit default 0,
page_start_label varchar(10) null,
page_end_label varchar(10) null
... remaining fields ...
)
上面的查询看起来像这样:
SELECT id, book_id, title,
COALESCE(page_start_label, CAST(page_start as varchar)) as page_start,
COALESCE(page_end_label, CAST(page_end as varchar)) as page_end,
(page_end - page_start + 1) as number_of_pages
FROM
Section
ORDER BY
book_id, is_front_matter DESC, page_start, page_end
然后我所要做的就是在插入和更新时将 page_start_label
和 page_end_label
的值从罗马语转换为阿拉伯语。两个额外的整数加上 bit 意味着每条记录多于 8 个字节的额外存储但是大多数记录都将 page_start_label
和 page_end_label
留空我可能实际上节省空间!
这听起来像是一个合理的解决方案吗?还是我错过了潜在的陷阱/缺点?
最佳答案
虽然我通常会将表示细节留给表示层,但在这种情况下我同意@njk 的观点。
由于您会将罗马数字作为传入数据的一部分,可能需要为多个前端和翻译提供服务,并且您希望能够轻松地在 SQL 中进行排序,因此我会预先计算一个罗马数字查找表数字和它们的等价整数,直到某个相当大的页码(也许是 32,767,尽管您知道您的数据)。
重申一下,我假设页码有一些合理的上限,并且您不会在需要数百万个值的查找表的地方转换任何内容。这足以说服我为此在表示层中使用代码。
貌似已经有any number of functions out there所以您不必重新发明轮子来创建此表。
即使您将来转向不同的方案,使用罗马数字传入数据的想法意味着您可能始终需要这种类型的表才能导入书籍/章节。
关于sql - 罗马数字作为数据库中的页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713286/
我有一个 html 代码,当我使用 html2pdf 将其转换为 pdf 时,它比单个页面长,我需要将页码放在两个页面中。 我试过把 page_footer 代码放在这篇文章中说的:html2pdf
我有这样的东西: (忽略代码的丑陋)。 xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function(){ if (xmlh
我正在尝试从 The Wealth of Nations 的在线版本中提取文本并创建一个数据框,其中每个观察结果都是书中的一页。我以一种迂回的方式来做,试图模仿我在 R 中所做的类似的事情,但我想知道
我正在为由 Python-PPTX 生成的幻灯片制作自定义目录。对于已经设置好的幻灯片、页脚和幻灯片编号,我已经可以在生成的 PPTX 中查看它。我相信幻灯片编号已经存在,只需要阅读。 我的问题是,幻
我正在寻找一种工具或服务,它可以抓取具有大量页面的网络域,创建站点地图,然后以有助于我查看、理解和分组内容的方式可视化该 map (我是新手站点)像 TreeView 或其他标准站点地图可视化之类的东
所以我有一个像这样分组的 slider : slide content slide content slide content slide content s
当我在文档正文中获得特殊标记时(例如,当我获得 时,我希望下一页页脚显示“第 1 页 x”时,我尝试重置页码)其中 x 是下一个分页符之前的页数) 事实上,它应该与我分割正文文档并单独转换它完全相同
我正在开发一个图书阅读器 iOS 应用程序,并使用 webview 显示 epub 图书。我用于解析 epub 图书的第 3 方库是“KFEpubKit”。 我必须为用户提供调整字体大小的选项(如在
我正在创建一个基于 Web 的教程,其中包含多个页面的模块。我在每个页面的底部都有页码(xx of yy,例如“01/12”),使用 html div 和 css。我有一个 java 包装器,但无法弄
我正在使用 PDFBox,成功地从 PDF 中检索字段坐标。继续处理多页 PDF,我遇到了这样的情况:我需要确定这些字段来自哪个页面,此外还需要将坐标从自下而上转换为自上而下。我已经阅读了文档的许多页
我使用以下代码对 UIWebView 进行分页。 self.webView.paginationMode = UIWebPaginationModeLeftToRight; self.webView.
有没有办法向新创建的幻灯片添加页码,并继承上一张幻灯片的样式? XMLSlideShow slideShow = new XMLSlideShow(new FileInputStream("templ
据我所见,CodeIgniter 的分页计算页面的方式是错误的,因为我的分页看起来像这样: 1 2 3 > 很好,问题出在每个分页号码 url 中,除了第一个: 分页中的编号 2 具有以下 url:
我一直在玩这个库,但运气不好。我想提取下面的文字 1196 页。我怎样才能使用这个库来做到这一点? 最佳答案 好吧,经过几次尝试,我确实设法得到了那个文字页面,所以我要分享这个。所以从技术上讲,文字
有没有办法获得搜索查询下一页的结果?当我提供页面参数时,我从 iTunes 得到相同的结果: https://itunes.apple.com/search?country=us&limit=200&
在我的 XSL-FO 中:我需要在页脚中显示页码。 我的页面布局通常是:第 1、2、3、4、5 页。 有时第 2 页会被 2a 和 2b 替换,因此流程应该是:1、2a、2b、3、4、5。 第 2a
我有一个格式问题,我的 html 表格的标题位于每一侧(我可以和谁住在一起),但它看起来很糟糕(如下图)。然后我不想在 PDF 文件中插入页码(我不知道该怎么做)。 我的 JavaScript fun
我正在使用 Java 中的 iText 创建一些 PDF 报告。根据要求,我应该做的是按照page_number/page_numbers_in_total格式对页码进行编号。 但是,内存操作给我的项
我有这段代码,它根据按钮单击从服务中获取数据。当我单击上一个或下一个按钮时,我想要什么,我想更改数据表底部的页码。 $('.paginate_button.previous', this.api().
我将查看器托管在我的本地网络服务器上,iframe 指向并加载 pdf。 然后我想按下一个按钮,将页码“记录”到一个文本文件中,我读到 this似乎建议您可以使用 pdf.getPage 获取页码的问
我是一名优秀的程序员,十分优秀!